Задача
Настроить использование RBAC в Yii2.
Условия
Список возможных ролей:
- guest — не авторизованный юзер;
- BRAND — авторизованный юзер, наследует разрешения роли guest и имеет свои уникальные разрешения;
- TALENT — авторизованный юзер, наследует разрешения роли guest и имеет свои уникальные разрешения;
- admin — авторизованный юзер, наследует разрешения ролей guest, BRAND и TALENT и имеет свои уникальные разрешения.
- Роль определяется полем group в модели UserExt;
- Роли имеют вложенную структуру — одна роль может наследовать разрешения другой;
- Используется yii\rbac\PhpManager;
- Не использовать назначение роли юзеру по его ID — вместо этого использовать несколько предустановленных ролей (defaultRoles);
- Генерирование конфига «роль-разрешения» будет делать консольная команда yii;
- Будут использованы расширенные правила (Rules) для разрешений.
Предварительная настройка
app/config/console.php
'components' => [
// ...
'authManager' => [
'class' => 'yii\rbac\PhpManager',
],
// ...
],
app/config/web.php
'components' => [
// ...
'authManager' => [
'class' => 'yii\rbac\PhpManager',
'defaultRoles' => ['admin', 'BRAND', 'TALENT'], // Здесь нет роли "guest", т.к. эта роль виртуальная и не присутствует в модели UserExt
],
// ...
],
Создать директорию
@app/rbac
— именно в ней будут находиться разрешения и правила.