Ограничить удаление конкретного пользователя в yii2-user

Я использую yii2-admin и yii2-user. Я создал роль Creator, у которой есть доступ ко всему. Есть еще одна роль, называемая Admin, которая имеет ограниченный доступ. Но есть право удалять пользователей. Теперь я хочу запретить Admin удалять Creator. Я знаю, что этого можно добиться, переопределив функцию delete функции AdminController функции yii2-user. Но я не могу понять логику ограничения Admin или любого другого пользователя от удаления Creator.

Заранее спасибо!


person Abhimanyu Saharan    schedule 22.01.2015    source источник


Ответы (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 '?'
                    ],
                ],
            ],
        ];
    }

Это всего лишь пример, измените его под свои нужды. Вероятно, вы не должны позволять администратору также редактировать создателя, так как изменение пароля будет почти таким же, как удаление.

person Mihai P.    schedule 22.01.2015
comment
Я думаю, ты меня не понял. Я хочу, чтобы пользователи, имеющие доступ к панели администратора, могли удалять других пользователей, но не тех, у кого роль Creator. - person Abhimanyu Saharan; 23.01.2015
comment
Я думал о другом способе сделать это. Скрывая пользователей с ролью Creator в представлении сетки. И это должно происходить только в том случае, если вошедший user не имеет роли Creator. Любые идеи о том, как это сделать? - person Abhimanyu Saharan; 23.01.2015