2012-09-17 94 views
0

我是CakePHP的新手,但熟悉其他PHP框架。我試圖找出執行以下ACL設置的'Cake方式'。CakePHP ACL。一個動作多個權限

我目前已將ACL配置爲Simple Acl tutorial。當我想將組限制到特定操作時,這很有用。

但是,如果我有一個動作,例如編輯,並且我希望編輯操作受到限制,具體取決於用戶正在嘗試編輯的組。

集團「用戶」中的用戶將被拒絕訪問編輯操作。
如果所編輯的用戶位於組「用戶」中,則可以編輯組「主持人」中的用戶。
如果所編輯的用戶位於組「用戶」或「管理員」中,則組中的用戶將被允許編輯。

我很難理解我的用戶和組表格與aco的& aro不同,以及我應該如何建立這種關係,因此它在未來不會讓我感動。

我開始試驗創建一個路由索引函數,該函數將您彈回到不同的結束操作; edit_user,edit_mod,edit_admin然後我可以用ACL鎖定,但我不確定是否有更好的方法來組織這個。

提前許多感謝,
皮特

回答

1

你可以建立你的權限是這樣的:

ARO:

  • 用戶
    • 主持人
      • 管理員
    • 一些其它類型的構件的1
    • 一些其它類型的構件的2

ACO:

  • 用戶控制器
    • 編輯動作
      • 編輯用戶
        • 編輯版主
          • 編輯管理
        • 編輯一些其它類型的構件的1
        • 編輯一些其它類型的構件2

然後,你可以說:

  1. 主持人有權編輯用戶:兩個主持人,管理員可以編輯任何類型成員的
  2. 主持人編輯版主 沒有權利:兩個主持人,管理員無法編輯主持人
  3. 聯繫有權編輯版主:管理員可以在
  4. 編輯版主和管理員
+0

感謝您的回答@Kevthunder使用您的示例代碼在Edit Action中看起來像什麼?我需要查詢該人正在編輯的人,然後運行$ this-> Acl-> check()手動限制此操作?理想情況下,我希望在aros_acos表中管理所有權限的設置。 –