Вопрос в следующем, почему в RBAC не применяются наследуемые правила??
те. при генерации правил в RbacController используются следующие зависимости:
Код: Выделить всё
$authManager->addChild($role['user'], $role['guest']);
$authManager->addChild($role['author'], $role['user']);
$authManager->addChild($role['author'], $permission['create']);
$authManager->addChild($role['moderator'], $role['author']);
$authManager->addChild($role['moderator'], $permission['update']);
$authManager->addChild($role['admin'], $role['moderator']);
$authManager->addChild($role['admin'], $permission['delete']);
А для того, что бы правила сработали необходимо снова прописать в UserGroupRule эту же зависимость return $group == 'guest' || $group == 'user' || $group == 'moderator' || $group == 'author' || $group == 'admin';
Код: Выделить всё
public function execute($user, $item, $params)
{
$group = (!\Yii::$app->user->isGuest)? \Yii::$app->user->identity->group : 'guest';
$group = \Yii::$app->user->identity->group;
if ($item->name === 'admin') {
return $group == 'admin';
}
elseif ($item->name == 'author') {
return $group == 'admin' || $group == 'author';
}
elseif ($item->name == 'moderator') {
return $group == 'moderator' || $group == 'author' || $group == 'admin';
}
elseif ($item->name == 'user') {
return $group == 'user' || $group == 'moderator' || $group == 'author' || $group == 'admin';
}
elseif ($item->name == 'guest') {
return $group == 'guest' || $group == 'user' || $group == 'moderator' || $group == 'author' || $group == 'admin';
}
return false;
}
Какие есть мысли?