Страница 1 из 1

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

Добавлено: 2017.07.16, 12:11
vladimir.a
Использую RBAC на основе DBManager. Мне нужно для незалогиненных пользователей установить роль, которая хранится со всеми разрешениями в базе данных. Читал документацию про defaul roles, но как я понял, это для залогиненных пользователей. Каким образом можно назначить роль для незалогинненых пользователей?

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

Добавлено: 2017.07.17, 06:46
maleks
делается роль с правилом проверяющим что незалогинен и выставляется в default roles

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

Добавлено: 2017.07.17, 13:11
girmate
Вот до сих пор не могу понять в каком случае нужна эта роль "по умолчанию" для не залогиненых пользователей? Ведь такие пользователи - гости. А гостям можно все, что не запрещено. А не запрещено все, где нет проверки ->can('success') либо такая проверка успешно пройдена. Кто бы разъяснил для чего нужна роль по умолчанию.

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

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

Например можно этой роли присвоить разрешение "Оставлять комментарии" в блоге.
Также само достаточно это разрешение у роли снять и гости не смогут комментить.

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

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

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

Добавлено: 2017.07.17, 13:43
vladimir.a
maleks писал(а):
2017.07.17, 06:46
делается роль с правилом проверяющим что незалогинен и выставляется в default roles
Можно поподробнее?
Насколько я понял... Мне нужно наследоваться от класса Rule и переопределить метод execute() на свой метод, который будет возвращать роль для незалогининного пользователя? Или я неверно понял?

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

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

А внутри проверяете чтобы текущий пользователь был гостем