【问题标题】:What is the best way to add a parent group to user groups in userfrosting?在 userfrosting 中将父组添加到用户组的最佳方法是什么?
【发布时间】:2015-10-27 11:06:44
【问题描述】:

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

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

非常感谢您抽出宝贵时间。

【问题讨论】:

  • 应该是可行的。谁可以在公司中创建新用户?公司的管理员?

标签: php mysql authorization access-control userfrosting


【解决方案1】:

从 0.3.1 版开始,UserFrosting 没有对组层次结构的内置支持。但是,它应该很容易实现。以下是我的做法:

  1. 创建两个组,“管理员”和“成员”。进行设置,使“管理员”成为新用户的 default primary group
  2. 创建两个表,companycompany_usercompany 表将存储有关公司的信息,主键为idcompany_user 表将公司与用户相关联,并有四列:
    • id (int)
    • company_id (int)
    • user_id (int)
    • flag_admin(布尔)

更改AccountController.php 中的register() 方法,这样当有人注册时,它会创建一个新公司,然后将其与该公司关联,通过将flag_admin 设置为“1”将其标记为该公司的管理员。

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

  1. 创建一个名为 manages(user_id_1, user_id_2) 的新 AccessCondition,如果 user_id_1user_id_2 属于同一公司 并且 user_id_1 已设置 flag_admin,则返回 true为 '1',否则为 false

  2. 向“管理员”组中的用户授予适当的权限,以便他们可以创建/更新/删除/查看用户,但仅限“成员”组中的用户,并且只有管理员 manages 他们(所以如果“成员”的 group_id 为“4”,条件=in_group(user.id,4)&&manages(self.id,user.id)

  3. 您还需要修改各种用户创建/更新/删除方法,以便管理员在创建用户时将其添加到“成员”组并将其与相应的公司相关联。

这应该可以帮助您入门,如果您需要进一步说明,请告诉我。

【讨论】:

  • 谢谢!我会努力做到的。但是,我发现组层次结构很有趣。以后会实施吗?
  • “正在考虑中”。我们必须决定增加的复杂性是否值得将其作为核心功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-17
  • 1970-01-01
  • 2014-04-28
  • 2018-08-10
  • 2011-11-21
  • 2011-11-09
  • 1970-01-01
相关资源
最近更新 更多