Не работает AccessControl на самописные роли RBAC в фреймворке YII2
Совсем новичок в yii2, пишу свой первый сайт. Я написал RBAC контроллер, написал нужные роли, правила и разрешения. Возникла проблема на моменте создания поведения для User контроллера: в behaviors()
добавил AccessControl
и прописал нужные доступы. Однако фильтр не пропускает самописные роли (user, admin). Пожалуйста, подскажите в чём проблема? Спасибо!
Код RBAC контроллера:
class RbacController extends Controller
{
public function actionInit()
{
$authManager = \Yii::$app->authManager;
// Create roles
$guest = $authManager->createRole('guest');
$user = $authManager->createRole('user');
$admin = $authManager->createRole('admin');
// Create simple, based on action{$NAME} permissions
$signin = $authManager->createPermission('/user/signin');
$logout = $authManager->createPermission('/user/logout');
$signUp = $authManager->createPermission('/user/signup');
$index = $authManager->createPermission('/user/index');
$history = $authManager->createPermission('/user/history');
$profile = $authManager->createPermission('/user/profile');
$usersList = $authManager->createPermission('/user/userlist');
// Add permissions in Yii::$app->authManager
$authManager->add($signin);
$authManager->add($logout);
$authManager->add($signUp);
$authManager->add($index);
$authManager->add($history);
$authManager->add($profile);
$authManager->add($usersList);
// Add rule, based on UserExt->group === $user->group
$userGroupRule = new UserGroupRule();
$authManager->add($userGroupRule);
// Add rule "UserGroupRule" in roles
$guest->ruleName = $userGroupRule->name;
$user->ruleName = $userGroupRule->name;
$admin->ruleName = $userGroupRule->name;
// Add roles in Yii::$app->authManager
$authManager->add($guest);
$authManager->add($user);
$authManager->add($admin);
// Add permission-per-role in Yii::$app->authManager
// Guest
$authManager->addChild($guest, $signin);
$authManager->addChild($guest, $signUp);
$authManager->addChild($guest, $index);
// user
$authManager->addChild($user, $profile);
$authManager->addChild($user, $history);
$authManager->addChild($user, $guest);
// Admin
$authManager->addChild($admin, $usersList);
$authManager->addChild($admin, $user);
}
}
Код behaviors()
User контроллера
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::class,
'denyCallback' => function() {
if(Yii::$app->user->isGuest)
return $this->redirect('signin');
throw new ForbiddenHttpException('У вас нет доступа к этой странице');
},
'only' => [],
'rules' => [
[
'allow' => true,
'actions' => ['signin', 'signup'],
'roles' => ['?'],
],
[
'allow' => true,
'actions' => ['logout', 'profile', 'history'],
'roles' => ['user'],
],
[
'allow' => true,
'actions' => ['userlist'],
'roles' => ['admin'],
]
],
],
];
}
Готов предоставить другие части программы, если потребуется.