@Leopandro
Разработчик CRM/ERP систем

Почему у незалогинившихся пользователей есть доступ к контроллеру?

Вот таким вот кодом в модели я определяю доступ к страницам в зависимости от роли(админ - это role_id=1, пользователь - это role_id=2).
class User extends BaseUser
{


    public static function getNameById($id) {
        $row = self::find()->andWhere('id = :userId', array('userId' => $id))->one();
        if($row)
            return $row->username;
        return '';
    }



    public static function getMenuItemsByRoleUser($isAdmin,$isGuest) {

        if($isGuest)
            return [];

        if(Yii::$app->user->identity->role_id == 1) {
            return [
                ['label' => 'Пользователи', 'url' => ['/user/admin/index']],
                ['label' => 'Права доступа', 'url' => ['/access/index']],
                ['label' => 'Каталог разделов', 'url' => ['/catalog/index']],
                ['label' => 'Сверка дат', 'url' => ['/user/admin/index1']],
                ['label' => 'Импорт', 'url' => ['/user/admin/index1']],
                ['label' => 'Экспорт', 'url' => ['/user/admin/index1']],
                ['label' => '', 'url' => ['/user/admin/index1']],
                [
                    'label' => 'Выйти (' . Yii::$app->user->identity->username . ')',
                    'url' => ['/site/logout'],
                    'linkOptions' => ['data-method' => 'post']
                ],
            ];

        } else if(Yii::$app->user->identity->role_id == 2){
            return [
                ['label' => 'Каталог разделов', 'url' => ['/catalog/index']],
                ['label' => 'Каталог материалов', 'url' => ['/tasks-manager/index']],
                ['label' => 'Отчет', 'url' => ['/tasks-manager/index']],
                [
                    'label' => 'Выйти (' . Yii::$app->user->identity->username . ')',
                    'url' => ['/site/logout'],
                    'linkOptions' => ['data-method' => 'post']
                ],
            ];
        }
    }

    public function getRole()
    {
        return $this->hasOne(Role::className(), ['id' => 'role_id']);
    }
}


Но если вручную я перейду по ссылке catalog/index у меня почему то эта страница отображается даже если я не залогинился... из-за чего это может происходить? если что, этот баг появился после того как мне потребовалось изменить названия контроллеров...
  • Вопрос задан
  • 289 просмотров
Пригласить эксперта
Ответы на вопрос 1
У Вас здесь от роли пользователя формируется только меню, необходимо ещё настроить доступы к контроллерам/экшенам. В yii для этого есть поведение-фильтр access control
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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