Задать вопрос
alex4answ
@alex4answ

Не работает наследование роли от разрешения?

RBAC наследовал роль от разрешения, назначил эту роль пользователю, проверяю может ли он делать "разрешение" - ответ false:

role: admin
permission: canAdmin

auth_item_child:
parent         |  child
--------------+--------
canAdmin    |  admin


auth_assignment:
item_name  | user_id 
--------------+-----------
admin          | 1


при проверке:
\Yii::$app->user->can('canAdmin'); // false

UPD:
Путем махинаций, я понял что нужно наследовать не роль от разрешения (что логично), а разрешение от роли (что совсем не логично)

Почему так?
Ведь обычно наследуя - мы получаем св-ва родителя, а тут получается как-то наоборот все
  • Вопрос задан
  • 51 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
Путем махинаций, я понял что нужно наследовать не роль от разрешения (что логично), а разрешение от роли (что совсем не логично)

Почему так?
Ведь обычно наследуя - мы получаем св-ва родителя, а тут получается как-то наоборот все


Это у вас все наоборот. В реальной жизни роль объединяет в себе полномочия. Вы даже сами сначала роль, потом разрешение.
role: admin
permission: canAdmin
А в таблице делаете наоборот.

Директор может иметь доступ к админке, а клиент нет. Админ может управлять контентом, а пользователь нет. Если это перевернуть, то получается разрешение управлять контентом может иметь доступ к админу. Где же тут логика?

Роль - это группа разрешений.

Вы можете присваивать разрешения напрямую пользователю, любо объединять их в группу и присваивать группу (роль) пользователю. Иначе никак. Надеюсь понятно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы