Как ограничить доступ гостя в админку?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
qwww1.1978
Сообщения: 13
Зарегистрирован: 2016.02.26, 14:39

Как ограничить доступ гостя в админку?

Сообщение qwww1.1978 »

Добрый день. Подскажите пожалуйста как в Yii можно ограничить доступ гостя в админку и при заходе на любую страницу админки ему выдавать виюшку login? Как сделать это в одном месте в behaviors() ? Чтобы работало в других контроллерах? Когда наследую один контроллер другим, то behaviors перекрывают друг друга и не работает. Мне редлагали rbac но он мне пока не нужен. Про AccessControl читал но там написано про то как сделать в одном месте. Придумал реализовать через components в настройках, но как тогда его подключать во всех контроллерах?
Спасибо заранее.
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Как ограничить доступ гостя в админку?

Сообщение Onotole »

Както так

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

<?php

namespace admin;

use Yii;
use yii\filters\AccessControl;
use app\models\User;

class Module extends \yii\base\Module
{
    public $controllerNamespace = 'admin\controllers';

    public function behaviors() {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'allow' => true,
                        'roles' => [User::ROLE_ADMIN]
                    ]
                ]
            ]
        ];
    }
}
 
qwww1.1978
Сообщения: 13
Зарегистрирован: 2016.02.26, 14:39

Re: Как ограничить доступ гостя в админку?

Сообщение qwww1.1978 »

Спасибо за столь быстрый ответ. Подскажите, куда мне прописывать этот код? Это модуль? А как его подключать к контроллерам?
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Как ограничить доступ гостя в админку?

Сообщение Onotole »

qwww1.1978 писал(а):Спасибо за столь быстрый ответ. Подскажите, куда мне прописывать этот код? Это модуль? А как его подключать к контроллерам?
Module.php
В контроллере не нужно писать ничего
qwww1.1978
Сообщения: 13
Зарегистрирован: 2016.02.26, 14:39

Re: Как ограничить доступ гостя в админку?

Сообщение qwww1.1978 »

Onotole писал(а): Module.php
В контроллере не нужно писать ничего
Извините, а куда этот файл module.php тогда положить? Нужно ли что-нибудь прописывать в настройках main.php ? Дополню что использую приложение advanced и я использую не модули а у меня просто набор котроллеров, моделей и вьюх.
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Как ограничить доступ гостя в админку?

Сообщение Nerf »

Можете сделать костыль:

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

public function behaviors() {
    return array_merge(parent::behaviors(), [
        // ...
    ]);
}
 
Но ни к чему хорошему это не приведет.
qwww1.1978
Сообщения: 13
Зарегистрирован: 2016.02.26, 14:39

Re: Как ограничить доступ гостя в админку?

Сообщение qwww1.1978 »

Спасибо вроде разобрался. Попробую через parent сделать
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Как ограничить доступ гостя в админку?

Сообщение Onotole »

qwww1.1978 писал(а):
Onotole писал(а): Module.php
В контроллере не нужно писать ничего
Извините, а куда этот файл module.php тогда положить? Нужно ли что-нибудь прописывать в настройках main.php ? Дополню что использую приложение advanced и я использую не модули а у меня просто набор котроллеров, моделей и вьюх.
Сгенерируйте модуль в gii и автоматом создастся Module.php в корне модуля. В нем и пишите
qwww1.1978
Сообщения: 13
Зарегистрирован: 2016.02.26, 14:39

Re: Как ограничить доступ гостя в админку?

Сообщение qwww1.1978 »

Onotole писал(а):
qwww1.1978 писал(а):
Onotole писал(а): Module.php
В контроллере не нужно писать ничего
Извините, а куда этот файл module.php тогда положить? Нужно ли что-нибудь прописывать в настройках main.php ? Дополню что использую приложение advanced и я использую не модули а у меня просто набор котроллеров, моделей и вьюх.
Сгенерируйте модуль в gii и автоматом создастся Module.php в корне модуля. В нем и пишите

Хорошо. Спасибо!
Skesh
Сообщения: 12
Зарегистрирован: 2016.04.22, 10:05

Re: Как ограничить доступ гостя в админку?

Сообщение Skesh »

Выдает Undefined class constant 'ROLE_ADMIN' не подскажете как починить?
Изображение
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как ограничить доступ гостя в админку?

Сообщение zelenin »

Skesh писал(а):не подскажете как починить?
Undefined class constant 'ROLE_ADMIN' - перевели уже?
Skesh
Сообщения: 12
Зарегистрирован: 2016.04.22, 10:05

Re: Как ограничить доступ гостя в админку?

Сообщение Skesh »

что перевел?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как ограничить доступ гостя в админку?

Сообщение zelenin »

Skesh писал(а):что перевел?
текст ошибки.
Skesh
Сообщения: 12
Зарегистрирован: 2016.04.22, 10:05

Re: Как ограничить доступ гостя в админку?

Сообщение Skesh »

ну да, нужно где то назначить роль админа? ток начал учить юии...
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как ограничить доступ гостя в админку?

Сообщение zelenin »

Skesh писал(а):ну да, нужно где то назначить роль админа? ток начал учить юии...
как перевели?
Prosto_Tok
Сообщения: 132
Зарегистрирован: 2015.09.30, 20:12

Re: Как ограничить доступ гостя в админку?

Сообщение Prosto_Tok »

Skesh писал(а):ну да, нужно где то назначить роль админа? ток начал учить юии...
Нужно не с фреймворка начинать, а с языка.

нужно завести константу ROLE_ADMIN в классе User. Далее работать с ней.

P.s.
@zelenin поздравляю с зеленкой
Skesh
Сообщения: 12
Зарегистрирован: 2016.04.22, 10:05

Re: Как ограничить доступ гостя в админку?

Сообщение Skesh »

Млин ну что я делаю не так?
Изображение
Leffken
Сообщения: 115
Зарегистрирован: 2015.07.10, 15:49
Откуда: yola
Контактная информация:

Re: Как ограничить доступ гостя в админку?

Сообщение Leffken »

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

const $variable = 10; 
 
так не работает что ли ?
Ответить