я использую yii2-admin
а также yii2-user
, Я создал роль Creator
у кого есть доступ ко всему. Есть еще одна роль, которая называется Admin
которые имеют ограниченный доступ. Но есть возможность удалять пользователей. Теперь я хочу ограничить Admin
от удаления Creator
, Я знаю, что это может быть достигнуто путем переопределения delete
функция AdminController
из yii2-user
, Но я не могу понять логику ограничения Admin
или любой другой пользователь от удаления Creator
,
Заранее спасибо!
Посмотрите здесь: 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 '?'
],
],
],
];
}
Это всего лишь пример, измените его в соответствии со своими потребностями. Возможно, вы не должны позволять администратору редактировать Creator тоже, так как смена пароля будет почти то же самое, что и удаление.
Других решений пока нет …