我正在使用 Yii2 basic 和 RBAC。我有一个管理员创建各种中心的场景。然后管理员创建用户并将用户分配到这些中心。每个中心都有多个用户。现在这些用户创建不同的人员记录,每个用户都可以访问属于特定中心的用户创建的每个人的记录。
假设中心 A 有两个用户。用户 1 和用户 2 可以创建人员记录。现在用户 1 和用户 2 可以访问这些人的记录。其他中心用户无法访问属于中心 A 的用户 1 或用户 2 创建的这些人员记录。现在在 RBAC 中创建规则时,第一个返回语句有效或第二个返回语句有效
来自一个中心的用户可以访问他们的人员记录。但是其他中心的用户应该无法访问中心 A 的这些人的记录。
声明 1:
return isset($params['model']) ? ('user-' . $params['model']->UserId == $user) :false ;
声明 2:
return isset($params['model']) ? ('center-' . $params['model']->CenterId== $user) :false ;
数据库结构
中心表
- 中心标识
- 中心名称
用户表
- 用户身份
- 姓名
人表
- 个人身份
- 中心标识
- 用户身份
- 人名
Center_Assignment
- 中心分配 ID
- 中心标识
- 用户身份
所以我的规则执行功能如下
public function execute($user, $item, $params)
{
return isset($params['model']) ? ('center_assignment-' . $params['model']->CenterId== $user) :false ;
}