2012-09-17 51 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表中管理所有权限的设置。 –