Закрыть админку с помощью AccessControl

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Закрыть админку с помощью AccessControl

Сообщение jakiro »

Всем добра!
Дошел наконец то до разделение прав пользователей.
Пытаюсь понять простую вещь.
Как мне закрыть всю админку от неавторизованных пользователей?
У меня есть AccessController в котором есть behaviors() и от этого контроллера наследуется все остальное.
Дошел пока только так:

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

  public function behaviors()
  {
    return [
      'access' => [
        'class' => AccessControl::className(),
        'only' => ['*'],
        'rules' => [
          [
            'allow' => true,
            'roles' => ['@'],
          ],
        ],
        'denyCallback' => function () {
          return Yii::$app->response->redirect(['auth/login']);
        },
      ],
    ];
  }
 
'only' пытался указывать, не указывать. Как я понял, если не указыввать, то ко всем.
Правило одно, для всех экшенов, если авторизован, то 'allow' => true
Но что то ничего не происходит ;( Что то не так делаю?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Закрыть админку с помощью AccessControl

Сообщение samdark »

Уберите only и denyCallback.
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Закрыть админку с помощью AccessControl

Сообщение jakiro »

Sam Dark писал(а):Уберите only и denyCallback.
Убрал все лишнее:

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

class AccessController extends BackendController
{
  public function behaviors()
  {
    return [
      'access' => [
        'class' => AccessControl::className(),
        'rules' => [
          [
            'allow' => true,
            'roles' => ['@'],
          ],
        ]
      ],
    ];
  }
  /*public function init()
  {
    parent::init();

    if( Yii::$app->getUser()->getIsGuest() )
    {
      return $this->redirect('/auth');
    }

    return true;

  }*/

  public function actions()
  {
    return [
      'WysiwygUpload' => [
        'class' => WysiwygUpload::className(),
      ]
    ];
  }

} 
Спокойно открыл в инкогнито режиме ;(
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Закрыть админку с помощью AccessControl

Сообщение jakiro »

Заходил на контроллер Site стандартно

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

class SiteController extends AccessController
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Закрыть админку с помощью AccessControl

Сообщение ElisDN »

Уберите defaultRoles из конфига (если есть).
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Закрыть админку с помощью AccessControl

Сообщение jakiro »

ElisDN писал(а):Уберите defaultRoles из конфига (если есть).
Сделал поиск по всему проекту, нет ни одного defaultRoles (только в папке vendor\yiisoft\yii2\rbac)
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Закрыть админку с помощью AccessControl

Сообщение jakiro »

Я вообще правами не занимался никогда ;(
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Закрыть админку с помощью AccessControl

Сообщение jakiro »

А как тогда вы закрываете админку? ;( Яхз почему фрэймворк игнорит поведение с правами
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Закрыть админку с помощью AccessControl

Сообщение jakiro »

Нашел ошибку.
Хотя странно почему так получилось.
В родительстком контроллере была вот такая загогулина (сбор логов)

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

public function beforeAction()
  {
    if(!Yii::$app->getUser()->isGuest)
    {

        $m = new Logs();
        $m->username = \Yii::$app->getUser()->identity->username;
        $m->ip = \Yii::$app->request->userIP;
        $m->controller = \Yii::$app->controller->id;
        $m->action = \Yii::$app->controller->action->id;
        $m->save();
      
    }
    return true;
  }
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Закрыть админку с помощью AccessControl

Сообщение maleks »

В доках указано как нужно переопределять такие методы как beforeAction:

http://www.yiiframework.com/doc-2.0/yii ... %29-detail
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Закрыть админку с помощью AccessControl

Сообщение jakiro »

maleks писал(а):В доках указано как нужно переопределять такие методы как beforeAction:

http://www.yiiframework.com/doc-2.0/yii ... %29-detail
Да, спасибо, сообразил уже)
Ответить