Задать вопрос
@evgen9586
Backend-dev. Лублу Enterprise и не люблю понты)

Реально ли ограничить доступ к странице не используя велосипед RBAC?

Есть админка. Доступ в неё ограничен банально просто в модульке:
public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
        ];
    }


Т е только пользователи с ролью авторизированный могут зайти в админку. Это ок.

Но теперь я добавил второго пользователь в базу данных User. И нужно чтобы 1 пользователь не имел доступа к n-нной странице в админке. А другой видел.

Можно ли это настроить без часовой настройки RBAC или всё же придётся читать документацию и настраивать роли?
  • Вопрос задан
  • 137 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
public function behaviors()
    {
        return [
            'access' => [
                'class' => \yii\filters\AccessControl::className(),
                'rules' => [
                    // allow authenticated users
                    [
                        'allow' => true,
                        'matchCallback' => function ($rule, $action) {
                            if (Yii::$app->user->id == 1){
                                return false;
                            } else {
                                return true;
                            }

                        }
                    ],
                    // everything else is denied
                ],
             ],
        ];
    }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
можно, например настроив matchCallback, только стоит ли...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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