在用户冻结中向用户组添加父组的最佳方法是什么?

时间:2015-10-27 11:06:44

标签: php mysql authorization access-control userfrosting

我是新来的,这是我的第一个问题。 首先,我为我可怜的英语道歉。 我想使用userfrosting 0.3.0创建一个应用程序,其中:

  • 任何未注册的人都可以创建一个超级组(例如公司)
  • 当时创建了管理员用户,而不是root用户,但只能从超级组中读取信息(管理员无法看到其他公司)
  • 管理员可以在用户组内组织用户,但只有root用户可以创建组并修改权限

非常感谢你的时间。

1 个答案:

答案 0 :(得分:0)

UserFrosting,从版本0.3.1开始,没有对组层次结构的内置支持。但是,它应该很容易实现。我将如何做到这一点:

  1. 创建两个组,“管理员”和“成员”。进行设置,以便“管理员”是新用户的default primary group
  2. 创建两个表companycompany_usercompany表将存储有关公司的信息,主键为idcompany_user表将公司与用户关联,并有四列:
    • id(int)
    • company_id(int)
    • user_id(int)
    • flag_admin(布尔)
  3. 更改register()中的AccountController.php方法,以便在有人注册时创建新公司,然后将其与该公司关联,通过设置{{1}将其标记为该公司的管理员到'1'。

    添加到特定公司的所有成员也应添加到此表中,但flag_admin设置为“0”。

    1. 创建一个名为flag_admin的新AccessCondition,如果manages(user_id_1, user_id_2)true属于同一家公司user_id_1 strong> user_id_2user_id_1设置为'1',否则设为flag_admin

    2. 为“管理员”组中的用户授予适当的权限,以便他们可以创建/更新/删除/查看用户,但只有“成员”组中的用户才有,并且只有管理员false他们(因此,如果“成员”的group_id为“4”,则条件= manage

    3. 您还需要修改各种用户创建/更新/删除方法,以便在管理员创建用户时,将其添加到“成员”组并将其与相应的公司关联。
    4. 这应该让你开始,如果你需要进一步澄清,请告诉我。