Задать вопрос
@fattan
программист

Как в Yii2 прикрутить админку rbac к отдельным модулям с помощью mdmsoft yii2-admin?

Суть вопроса:
Есть система на Yii2 (шаблон basic). В ней есть отдельные модули. Система ролей есть как для приложения, так и для конкретных модулей.
Для конкретных модулей разделение прав организовано конфигурацией файла Module.php:
public function init()
    {
        parent::init();

        $prefix = $this->id;

        $this->components = [
          'authManager' => [
            'class' => 'app\modules\moduleName\rbac\ModuleDbManager',
            'itemTable' => "{{%{$prefix}_auth_item}}",
            'itemChildTable' => "{{%{$prefix}_auth_item_child}}",
            'assignmentTable' => "{{%{$prefix}_auth_assignment}}",
            'ruleTable' => "{{%{$prefix}_auth_rule}}",
          ],
        ];
}

То есть, для каждого модуля свои таблицы в БД с прификсом равным имени модуля.
Пытаюсь прикрутить админку mdmsoft yii2-admin редактирования ролей, для модулей. А там префиксы нельзя конфигурацией настроить. Там везде в коде идёт такой вызов:
$manager = Yii::$app->getAuthManager();
То есть, вызывается rbac менеджер не конкретного модуля, а глобальный, самого приложения.
Не знаю как эту проблему решить. Всё что приходит в голову, форкнуть mdmsoft yii2-admin и везде где вызывается менеджер, добавлять конфигурацию:

$manager = Yii::$app->getAuthManager();

        $prefix = 'moduleName';
        $manager->itemTable = "{{%{$prefix}_auth_item}}";
        $manager->itemChildTable = "{{%{$prefix}_auth_item_child}}";
        $manager->assignmentTable = "{{%{$prefix}_auth_assignment}}";
        $manager->ruleTable = "{{%{$prefix}_auth_rule}}";


Городить свой велосипед очень не хочется. Можно ли как-то решить мою задачу на уровне конфигурации? Можете ли подсказать более изящное решение?
Спасибо!
  • Вопрос задан
  • 2431 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik Куратор тега Yii
Доброе утро.
Есть хорошая статья, как добавить rbac на сайт. Без сторонних пакетов, силами одного framework. Как раз используется yii2-basic.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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