rbac вложенный маршрут

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Ответить
mindochin
Сообщения: 50
Зарегистрирован: 2010.12.13, 20:05

rbac вложенный маршрут

Сообщение mindochin »

у группы доступ к 'sms/*'. нужно показать кнопку ведущую на 'sms/mailing' только тем кто имеет туда доступ.
Yii::$app->user->can('sms/mailing') or Yii::$app->user->can('sms/*') - не работают, кнопка не показывается. но как же так, ведь 'sms/*' включает в себя 'sms/mailing' ??? неужели надо прописать персональное правило для каждого такого случая?
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: rbac вложенный маршрут

Сообщение yiijeka »

Мда, пошло это ещё с yii1....

Маршруты(роуты) никак не связаны с RBAC, у RBAC есть два понятия: роли и разрешения - больше ничего!
В данном случае смешались наименования разрешения и "маршруты".

Если вам надо установить права доступа к sms/mailing, то вам надо создать одно разрешение.

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

$auth = Yii::$app->authManager;
$smsMailing= $auth->createPermission('smsMailing');        
$auth->add($smsMailing); 
дальше создать роль SMS и назначить этой роли разрешение smsMailing.

Изображение

Теперь у вас есть роль SMS, назначаете её группе и эта группа будет иметь доступ к разрешению smsMailing. И проверяете только

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

Yii::$app->user->can('smsMailing')
внутренний механизм RBAC проверит есть ли у пользователя разрешение smsMailing, согласно его роли и предоставит или откажет в доступе к требуемому элементу. Так что никакое "персональное правило" прописывать не нужно.
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Re: rbac вложенный маршрут

Сообщение girmate »

Очень четкий ответ.
Осторожно! Вы общаетесь с новичком ;)
mindochin
Сообщения: 50
Зарегистрирован: 2010.12.13, 20:05

Re: rbac вложенный маршрут

Сообщение mindochin »

спасибо, все работает
Ответить