php - 在 userfrosting 中将父组添加到用户组的最佳方法是什么?

标签 php mysql authorization access-control userfrosting

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

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

非常感谢您抽出时间。

最佳答案

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

  1. 创建两个组,“Administrators”和“Members”。将其设置为“管理员”为 default primary group对于新用户。
  2. 创建两个表,companycompany_usercompany 表将存储有关公司的信息,主键为 idcompany_user 表将公司与用户相关联,有四列:
    • id(整数)
    • company_id (int)
    • user_id (int)
    • flag_admin ( bool )

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

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

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

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

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

这应该让你开始了,如果你需要进一步的说明,请告诉我。

关于php - 在 userfrosting 中将父组添加到用户组的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33366326/

相关文章:

php - 访问 CakePHP named vars 和 PHP GET vars 以及两者的区别

php - 将一个元素推送到php中多维数组中的每个数组?

php - 通知、设置已查看

mysql - INNER JOIN 3 个表引用 INFILE

php - 用PHP读取带有控制字符的TXT文件

asp.net-mvc-3 - 在 ASP.NET MVC 3 中覆盖/禁用授权

php - 自动从服务器发送 GCM 推送通知

javascript - 如何将 $scope.table = [] 插入 MySQL 数据库?

c# - 后备策略日志授权事件

c# - Intranet 应用程序中的 SimpleMembership