我是新来的,这是我的第一个问题。 首先,我为我糟糕的英语道歉。 我想使用 userfrosting 0.3.0 创建一个应用程序,其中:
- 任何未注册的人都可以创建 super 组(例如公司)
- 此时创建了一个administrator用户,除root外,只能读取supergroup的信息(administrators看不到其他公司)
- 管理员可以在用户组内组织您的用户,但只有根用户可以创建组和修改权限
非常感谢您抽出时间。
最佳答案
从 0.3.1 版开始,UserFrosting 没有对组层次结构的内置支持。但是,它应该很容易实现。以下是我的做法:
- 创建两个组,“Administrators”和“Members”。将其设置为“管理员”为 default primary group对于新用户。
- 创建两个表,
company
和company_user
。company
表将存储有关公司的信息,主键为id
。company_user
表将公司与用户相关联,有四列:id
(整数)company_id
(int)user_id
(int)flag_admin
( bool )
更改AccountController.php
中的register()
方法,这样当有人注册时,它会创建一个新公司,然后将他们与这家公司关联起来,将他们标记为通过将 flag_admin
设置为“1”来成为该公司的管理员。
添加到特定公司的任何成员也应添加到此表中,但 flag_admin
设置为“0”。
创建一个新的
AccessCondition
调用manages(user_id_1, user_id_2)
如果user_id_1
和user_id_2
属于同一家公司,则返回true
并且user_id_1
已将flag_admin
设置为“1”,否则为false
。向“Administrators”组中的用户授予适当的权限,以便他们可以创建/更新/删除/查看用户,但仅限于“Members”组中的用户,并且仅当管理员
<管理
s 他们(所以如果“Members”的 group_id 为“4”,condition=in_group(user.id,4)&&manages(self.id,user.id)
。- 您还需要修改各种用户创建/更新/删除方法,以便当管理员创建用户时,将他们添加到“成员”组并将他们与适当的公司相关联。
这应该让你开始了,如果你需要进一步的说明,请告诉我。
关于php - 在 userfrosting 中将父组添加到用户组的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33366326/