Страница 1 из 1

Генерация разрешений RBAC из существующих контроллеров

Добавлено: 2017.08.18, 10:15
ar2r
Приветствую всех! Обшерстил интерент и форумы, не нашел ответа на вопрос, надеюсь посоветуете решение.

Суть вопроса: есть много контроллеров, которые периодически будут добавлятся, каждый контроллер имеет стандартные 4 метода (CRUD). Нужно сделать возможность разделять права на каждый контроллер и метод отдельно. Идея каждый раз дописывать в rbac/init новый контроллер, не очень радует.

В базе разрешения хотелось бы хранить как "module-one/method-one", по этому перебор файлов в папке controllers, не совсем подходит.

Собственно вопросы:
1. Можно ли как-то красивее получить все контроллеры, или все роуты, не прибегая к обходу и парснгу файлов в папке controllers?
2. Если нет, то как получив файл ModuleOneController.php, получить его id в роуте, т.е. "module-one"?
3. Может что-то упускаю, как решают такие вопросы опытные юиишники? Не плохая ли идея в целом, подводные камни какие может есть, которые не вижу пока?

Спасибо.

Re: Генерация разрешений RBAC из существующих контроллеров

Добавлено: 2017.08.18, 13:12
Nex-Otaku
Нужно сделать возможность разделять права на каждый контроллер и метод отдельно.
Что имеется в виду? Управление через админку? Или прописывание разрешений в коде?

Re: Генерация разрешений RBAC из существующих контроллеров

Добавлено: 2017.08.18, 13:23
ar2r
Управление через админку, чекбоксами (к примеру). Чтобы была возможность гибкой настройки прав без залезания в код.

Как пример, допустим даём user1 права на module1(index,view) и на module2(update,delete) а user1 на module1(delete) и module2(update). И так для любого пользователя, любой набор модулей и действий к ним.

В коде будет универсальная проверка, что-то вроде

Код: Выделить всё

if (Yii::$app->user->can($this->controller->id.'/'.$this->action->id))

Re: Генерация разрешений RBAC из существующих контроллеров

Добавлено: 2017.08.19, 07:05
maleks

Re: Генерация разрешений RBAC из существующих контроллеров

Добавлено: 2017.08.19, 07:44
ElisDN
Создаёте, например, class RouteRule и используете:

Код: Выделить всё

Yii::$app->user->can('route', ['route' => $this->controller->route])

Re: Генерация разрешений RBAC из существующих контроллеров

Добавлено: 2017.08.21, 06:55
ar2r
ElisDN писал(а): 2017.08.19, 07:44 Создаёте, например, class RouteRule и используете:

Код: Выделить всё

Yii::$app->user->can('route', ['route' => $this->controller->route])
С проверкой нет проблем, это понятно. Как изначально получить список этих контроллеров, чтобы в админке вывести и дать админу возможность распределять эти самые права.

Re: Генерация разрешений RBAC из существующих контроллеров

Добавлено: 2017.08.21, 06:57
ar2r
maleks писал(а): 2017.08.19, 07:05 viewtopic.php?f=19&t=33846&p=172500
Спасибо, видать пропустил в поиске этот топик.