Роль для незалогиненных пользователей

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Ответить
vladimir.a
Сообщения: 3
Зарегистрирован: 2017.07.16, 11:39

Роль для незалогиненных пользователей

Сообщение vladimir.a »

Использую RBAC на основе DBManager. Мне нужно для незалогиненных пользователей установить роль, которая хранится со всеми разрешениями в базе данных. Читал документацию про defaul roles, но как я понял, это для залогиненных пользователей. Каким образом можно назначить роль для незалогинненых пользователей?
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Роль для незалогиненных пользователей

Сообщение maleks »

делается роль с правилом проверяющим что незалогинен и выставляется в default roles
Yii2 universal module sceleton - for basic and advanced templates
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Re: Роль для незалогиненных пользователей

Сообщение girmate »

Вот до сих пор не могу понять в каком случае нужна эта роль "по умолчанию" для не залогиненых пользователей? Ведь такие пользователи - гости. А гостям можно все, что не запрещено. А не запрещено все, где нет проверки ->can('success') либо такая проверка успешно пройдена. Кто бы разъяснил для чего нужна роль по умолчанию.
Осторожно! Вы общаетесь с новичком ;)
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Роль для незалогиненных пользователей

Сообщение maleks »

Эта роль нужна чтобы работать с ней из админки, присваивать ей разрешения.

Например можно этой роли присвоить разрешение "Оставлять комментарии" в блоге.
Также само достаточно это разрешение у роли снять и гости не смогут комментить.
Yii2 universal module sceleton - for basic and advanced templates
vladimir.a
Сообщения: 3
Зарегистрирован: 2017.07.16, 11:39

Re: Роль для незалогиненных пользователей

Сообщение vladimir.a »

girmate писал(а): 2017.07.17, 13:11 Вот до сих пор не могу понять в каком случае нужна эта роль "по умолчанию" для не залогиненых пользователей? Ведь такие пользователи - гости. А гостям можно все, что не запрещено. А не запрещено все, где нет проверки ->can('success') либо такая проверка успешно пройдена. Кто бы разъяснил для чего нужна роль по умолчанию.
Я делаю от обратного: "запрещено все что явно не разрешено". Соответственно нужно присвоить роль гостям(обычным незалогиненым пользователям) с доступом к определенным модулям/контроллерам/действиям, гибко настроить доступ через DBManager, а не в каждом действии писать ->can('success'). Я делаю RBAC похожий на вот это расширение: https://github.com/developeruz/yii2-db-rbac, но там есть свои минусы... Есть вариант для пользователей разрешить прописав жестко в коде 'rules' => ' ', но опять идет привязка к коду. Мне же нужно все сделать через БД.
vladimir.a
Сообщения: 3
Зарегистрирован: 2017.07.16, 11:39

Re: Роль для незалогиненных пользователей

Сообщение vladimir.a »

maleks писал(а): 2017.07.17, 06:46 делается роль с правилом проверяющим что незалогинен и выставляется в default roles
Можно поподробнее?
Насколько я понял... Мне нужно наследоваться от класса Rule и переопределить метод execute() на свой метод, который будет возвращать роль для незалогининного пользователя? Или я неверно понял?
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Роль для незалогиненных пользователей

Сообщение maleks »

Ну в доках же написано как свои правила делать:
http://www.yiiframework.com/doc-2.0/gui ... sing-rules

А внутри проверяете чтобы текущий пользователь был гостем
Yii2 universal module sceleton - for basic and advanced templates
Ответить