Организация редиректа на авторизацию

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Ответить
AlienMans
Сообщения: 19
Зарегистрирован: 2017.05.03, 18:06

Организация редиректа на авторизацию

Сообщение AlienMans »

Использую advanced yii2, стандартный RBAC DBManager, авторизация через фронтенд и бекэнд общая.
Зарыл доступ к backend/index для всех через конфиг:

Код: Выделить всё

    'as access' => [
      'class' => 'yii\filters\AccessControl',
      'except' => ['site/login', 'site/error', 'site/logout', 'debug' ],
      'rules' => [
          [
              'allow' => true,
              'roles' => ['admin'],
          ],
      ],
сделал чтобы через админку не логинило пользователя, заменил $model->login() на $model->loginAdmin()

Код: Выделить всё

public function loginAdmin () {

        if ($this->validate() && Yii::$app->authManager->checkAccess($this->getUser()->getId(), 'admin')) {
            return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);
        }
        return false;

    }
Все вроде бы нормально, но при логине через фронтедн вручную переходя на backend/index вижу на фоне шаблона админки adminLTE ошибку 403 (доступ закрыт), т.е. индекс-страницу отображает. Хотелось чтобы в любом случае, редиректило на логин.
Попробовал сделать так

Код: Выделить всё

public function beforeAction($action)
    {
            if (Yii::$app->user->isGuest || !Yii::$app->user->can('admin')) {
                $this->actionLogin();
            }
            return parent::beforeAction($action);

    }
но отрабатывает (ошибка 404).
Много учусь Web-разработке. Получается.
Ищу ментора на добровольно принудительной основе))).
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Организация редиректа на авторизацию

Сообщение Nex-Otaku »

Код: Выделить всё

$this->redirect(['site/login']);
Попробуй.
AlienMans
Сообщения: 19
Зарегистрирован: 2017.05.03, 18:06

Re: Организация редиректа на авторизацию

Сообщение AlienMans »

Не сработало и такое.

Решил с помощью https://github.com/developeruz/yii2-custom-errorhandler
Теперь, если залогиненый пользователь пытается зайти на админ-панель его перекидывает на главную, даже не отображая приглашение входа в админку.
Много учусь Web-разработке. Получается.
Ищу ментора на добровольно принудительной основе))).
Ответить