在yii2-user中限制删除特定用户

时间:2015-01-22 17:30:00

标签: php yii2 yii2-advanced-app yii2-user

我正在使用yii2-adminyii2-user。我创建了一个可以访问所有内容的角色Creator。另一个名为Admin的角色具有有限的访问权限。但有权删除用户。现在,我想限制Admin删除Creator。我知道这可以通过覆盖delete AdminController的{​​{1}}函数来实现。但我无法弄清楚限制yii2-user或任何其他用户删除Admin的逻辑。

提前致谢!

1 个答案:

答案 0 :(得分:0)

看看这里:http://www.yiiframework.com/doc-2.0/guide-security-authorization.html#access-control-filter 您唯一需要做的就是将删除功能的访问权限限制为具有创建者角色的人。所有其他人将无法删除任何内容。

你的功能应该是

    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
........
                    [
                        'actions' => ['save', 'update', 'status', 'activate-all', 'deactivate-all'], // Define specific actions
                        'allow' => true, // Has access
                        'roles' => ['Admin', 'Creator'],
                    ],
                    [
                        'actions' => ['delete', 'delete-all'], // Define specific actions
                        'allow' => true, // Has access
                        'roles' => ['Creator'],
                    ],
                    [
                        'allow' => false, // Do not have access
                        'roles' => ['?'], // Guests '?'
                    ],
                ],
            ],
        ];
    }

这只是一个例子,修改它以满足您自己的需要。也许您不应该允许管理员编辑创建者,因为更改密码与删除几乎相同。