@akula22

Как правильно сделать проверку прав доступа на изменение этих самых прав?

Я хочу когда админ, модер или рут меняет свои права доступа в админке, выставить запрет.
Если рут то можно менять все, если админ то может ставить права уровнем до админа, (рута поставить не может, если модер то вообще не может менять права.
Вопрос как это делать, через Rbac или в модели через rules ?

Я пошел дорогой через rbac
сделал правило ChangeRoles
с таким кодом
public function execute($user_id, $item, $params)
    {
        $role = \Yii::$app->user->identity->role;

        if($role == 'moder')
            return false;

        if($role == 'root')
            return true;

        if($role == 'admin') {

        }
    }


но не догоняю как сделать проверку если меняет права админ, то есть не знаю как мне получить данные на какие права происходят изменения
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 2
@akula22 Автор вопроса
Не знаю правильно или нет, но сделал так:
проверка так
Yii::$app->user->can('changeRoles', $model->attributes['role'])

а в классе
public function execute($user_id, $item, $params)
{
$role = \Yii::$app->user->identity->role;

if($role == 'moder')
return false;

if($role == 'root')
return true;

if($role == 'admin') {
if($params == 'root') {
return false
} else {
return true;
}
}
}
Ответ написан
Комментировать
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
А как Вы выставляете права? Через форму? Есть выпадающий список прав?
Если да, то может проще, в зависимости от уровня доступа, показывать список прав?
Для root одни, для админа свой список, для модератора вообще этот список не показывать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы