Как настроить систему доступа пользователям на Yii2?

Пытаюсь настроить систему доступа типа admin, moder, user на Yii2. Чем больше копаюсь тем сильнее перестаю понимать почему все так усложняется. Понятно система RBAC гибкая и все такое но для ее использования требуется 4 таблицы в DB и все слишком сложно.

если можно в правилах контролера написать

...
[
'allow' => true,
'actions' => ['create','view'],
'roles' => array('admin'),
],
...

то как сделать чтобы максимально просто определить 3 роли : admin, moder, user
а к какой роли принадлежит текущий пользователь определять тупо по полю из DB,
просто если $user->type === 'admin' то присвоить ему роль admin и все?
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
@grinat
Yii2 в итоге вызывает метод can в классе пользователя, туда передается правила https://github.com/yiisoft/yii2/blob/master/framew... можно его переопределить. Либо через rbac, просто свой класс authManager'а использовать, меняешь метод getAssignments на свой и в нем возвращаешь массив ролей которые соответсвуют проверяемому пользователю из https://github.com/yiisoft/yii2/blob/master/framew... Вместо базы можно файловый rbac использовать https://github.com/yiisoft/yii2/blob/master/framew... в нем будет просто три файла, в твоем случае два вернут пустой массив, а в items:
<?php
return [
    'admin' => [
        'type' => 1,
    ],
    'moder' => [
        'type' => 1,
    ],
    'user' => [
        'type' => 1
    ]
];
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik Куратор тега Yii
Доброй ночи.
Вот Вам упрощённый вариант, без использования бд.
И небольшой вебинар.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы