butteff
@butteff
Раз в тысячу лет заправляю свитер в носки

Как привязать RBAC правила в yii2 к пользователям, исходя из данных ролей в БД?

В общем, в конфиге подключаю модуль:

'authManager' => [
            'class' => 'yii\rbac\PhpManager',
            'authFile' => '@app/config/rbac.php'
        ],


В rbac.php прописываю роли, ну для примера пусть будет одна роль админа:

<?php

return array (
    'items' =>array(
        'admin'=>array (
            'type'=>1, //где вообще почитать про все доступные типы этих ролей? Или что эта за единица?
            'name'=>'admin',
            'ruleName' => 'admin'
        )
    )
);


А вот дальше я затрудняюсь в реализации. Как присвоить эту роль определенным юзерам, у которых в бд в столбце role написано admin, чтобы потом можно было работать и проверять этим условием:

if (Yii::$app->user->can('admin')) {
     //делаем что-то, доступное только админу
}


Собственно, как? Документацию прочитал, но вот не догоняю несколько моментов:

1. Как это сделать? Взять данные из БД я могу, например в переменную $role. Дальше что?
if ($role == 'admin') {
    //присвоить этому юзеру админские права раз и на всегда, но какими API это делается? 
}


2. Где это присваивать и когда? Не при запуске же приложения каждый раз же это делать или в контроллере.
3. А что будет, если я захочу юзера прав решить, все надо переназначить или есть какой функционал, позволяющий делать это автоматически, если в бд иное значение?

В общем, есть ли какой-то способ сделать всё по фэн шую, задать юзерам нужные роли исходя из данных в бд?
  • Вопрос задан
  • 700 просмотров
Пригласить эксперта
Ответы на вопрос 1
abler98
@abler98
Software Engineer
Нужно создать правидо для ролей, вот здесь можно подробно об этом, и не только, почитать
https://github.com/yiisoft/yii2/blob/master/docs/g...
Ответ написан
Ваш ответ на вопрос

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

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