【问题标题】:Restrict Delete Specific User in yii2-user限制删除 yii2-user 中的特定用户
【发布时间】:2015-01-22 17:29:59
【问题描述】:

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

提前致谢!

【问题讨论】:

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


    【解决方案1】:

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

    你的函数应该是这样的

        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 '?'
                        ],
                    ],
                ],
            ];
        }
    

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

    【讨论】:

    • 我想你没有明白我的意思。我希望有权访问管理面板的用户应该能够删除其他用户,但不能删除具有Creator 角色的用户。
    • 我正在考虑另一种方法。通过从网格视图中隐藏具有Creator 角色的用户。只有当登录的user 没有Creator 角色时,才会发生这种情况。关于如何做的任何想法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 2014-10-12
    相关资源
    最近更新 更多