2

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

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

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

4

1 回答 1

0

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

  1. 创建两个组,“管理员”和“成员”。将其设置为“管理员”是新用户的默认主要组
  2. 创建两个表,company然后company_user. 该company表将使用主键存储有关公司的信息id。该company_user表将公司与用户相关联,并有四列:
    • id(整数)
    • company_id(整数)
    • user_id(整数)
    • flag_admin(布尔)

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

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

  1. 创建一个新的AccessCondition被调用者manages(user_id_1, user_id_2)true如果user_id_1user_id_2属于同一家公司并设置 为'1',否则返回。user_id_1flag_adminfalse

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

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

这应该让你开始,如果你需要进一步澄清,请告诉我。

于 2015-10-29T00:29:32.560 回答