behaviors (access)

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Ответить
s2044907
Сообщения: 13
Зарегистрирован: 2016.09.12, 17:39

behaviors (access)

Сообщение s2044907 »

Добрый день уважаемые!
Пишу не большой планировщик для себя, точнее для своей самоорганизации, да и вообще надо же с чего то начинать.
Попробую описать, что у меня есть, и что хочется:
Делал так: мне необходимо разграничить права доступа, точнее не то что бы разграничить, а все кто не авторизованны, видели страницу авторизации, и не могли запускать не один action. Решение: делал просто в начале любого action в котроллере, ставил проверку, если ты не админ груба говоря, иди авторизуйся.
Потом начал думать, надоело проверку писать везде. Но до RBAC еще не дорос, не могу осилить его не как. НО нашел интересный метод behaviors (access), в прицепе он мне подходит как нельзя лучше. Запретить все, а авторизованному пользователю все разрешить. НО опять затык, уже волосы готов рвать на себе. поправьте меня или подскажите, а то не как не могу освоить:
Параметр
1) 'only' – отвечает за то какие контроллеры у нас будут отслеживаться
2) Rules - пишем какое правило
3) 'allow' => true, 'actions' => ['create', 'update'], 'roles' => ['@'], - говорится что 'create', 'update' могут запускать только авторизованные.
А теперь мой тупик, понимаю эту структуру мне необходимо все контроллеры прописать в секции 'only' и потом прописать их , 'actions'.
Вопрос: Можно ли как то прописать, что всем контролерам запрещается запускаться не авторизованным пользователям, или запускать контроллеры только авторизованным пользователем. Как бы сказать, что бы не прописывать каждый контроллер?

если не понятно расписал, напишите я тогда еще подробнее напишу
s2044907
Сообщения: 13
Зарегистрирован: 2016.09.12, 17:39

Re: behaviors (access)

Сообщение s2044907 »

кажется разобрался, плохо прочитал документацию


actions: задаёт действия, соответствующие этому правилу. Значение должно быть массивом идентификаторов действий. Сравнение — регистрозависимо. Если свойство пустое или не задано, то правило применяется ко всем действиям.


и получилось у меня вот так:

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

public function behaviors(){
        return [
            'access' => [
                'class' => AccessControl::className(),
                'only' => [],
                'rules' => [
                    [
                        'allow' => true,
                        'actions' => ['login', 'signup'],
                        'roles' => ['?'],
                    ],
					
                    [
                        'allow' => true,
                        'actions' => ['logout'],
                        'roles' => ['@'],
                    ],
					[
                        'allow' => true,
                        'actions' => [],
                        'roles' => ['@'],
                    ],
                ],
            ],
        ];
    }
Ответить