Занимаюсь разграничением прав в приложении и наткнулся на очень интересную вещь, которая не раскрыта до конца в документации и других туториалах.
Суть такова: есть три роли админ > оператор > эксперт > гость ( я показал иерархию от админа до гостя, как это сделано у меня в системе)
Проблема: создав ряд правил и присвоив их к эксперту я не могу получить доступа из под роли оператор ( выше указано что это должно быть возможно).
В коде реализовано очень все просто ( фрагмент RbacController):
Код: Выделить всё
$authManager = \Yii::$app->authManager;
// Create roles
$guest = $authManager->createRole('guest');
$curator = $authManager->createRole('curator');
$operator = $authManager->createRole('operator');
$admin = $authManager->createRole('admin');
//Ticket processing
$viewOpenTicket = $authManager->createPermission('viewOpenTicket');
// Add permissions in Yii::$app->authManager
$authManager->add($viewOpenTicket);
// Add rule, based on UserExt->group === $user->group
$userGroupRule = new UserGroupRule();
$authManager->add($userGroupRule);
// Add rule "UserGroupRule" in roles
$guest->ruleName = $userGroupRule->name;
$curator->ruleName = $userGroupRule->name;
$operator->ruleName = $userGroupRule->name;
$admin->ruleName = $userGroupRule->name;
//Для эксперта
$authManager->addChild($curator,$viewOpenTicket);
//Добавляю curator
$authManager->addChild($operator, $curator);