@kedavr13

Rbac видит права в контроллере но не видеть их в views?

'authManager' => [
            'class' => 'yii\rbac\DbManager',
        ],

Кэш не определен, соответственно работать не должен.
У пользователя роль админа. Контроллер его пропускает
public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::class,
                'denyCallback' => function () {
                    $this->setSessionAlert(
                        Alert::ALERT_TYPE_ERROR,
                        Yii::t('app', 'access_denied'),
                    );

                    return $this->redirect('/index');
                },
                'rules' => [
                    [
                        'allow' => true,
                        'actions' => [
                            'index',
                        ],
                        'roles' => [
                            AuthAssignment::ROLE_ADMIN,
                            AuthAssignment::ROLE_REDEEMER,
                            AuthAssignment::ROLE_ACCOUNTANT,
                        ],
                    ],
                ],
            ],
        ];
    }

Если бы у пользователя не было роли все валилось бы еще на стадии контроллера.
Далее в views проверяю права $user->can(AuthAssignment::ROLE_ADMIN)
И там пусто, прав нет.
  • Вопрос задан
  • 49 просмотров
Пригласить эксперта
Ответы на вопрос 1
@5465
Проверьте, что вы используете ту же самую инстанцию authManager в вашем приложении. Для того чтобы ваше приложение использовало DbManager, вы должны указать его в конфигурации вашего приложения:

'components' => [
    'authManager' => [
        'class' => 'yii\rbac\DbManager',
    ],
    // ...
],


Также проверьте, что роль 'admin' существует в вашей базе данных, и что ей назначены соответствующие разрешения.

Если вы все еще испытываете проблемы, попробуйте отладить Yii::$app->authManager->checkAccess($userId, $permissionName, $params) для убедитесь, что ваш пользователь имеет необходимые права. Вы можете использовать третий параметр $params для передачи дополнительной информации, которую вы можете использовать для оценки разрешения.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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