Суть вопроса:
Есть система на 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}}";
Городить свой велосипед очень не хочется. Можно ли как-то решить мою задачу на уровне конфигурации? Можете ли подсказать более изящное решение?
Спасибо!