t-alexashka
@t-alexashka
Сразу пишу legacy код

User->can с режимом «ИЛИ»?

Приветы други.

Как сделать проверку user->can(role) только в режиме ИЛИ?
т.е. нужно дать возможность доступа к функционалу нескольким ролям, и чтобы не писать 5-10 раз
user->can('role1') || user->can('role2') || ...
можно ли как то сделать сразу проверку на список (массив) аля
user->can(['role1', 'role2', ...])
?
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
@davidnum95
Два варианта:
1. Вынести проверку в статическую функцию.
2. Написать свой класс User, переопределить функцию can и подсунуть его в качестве компонента.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
proudmore
@proudmore
Вариант с правильной структурой ролей, разрешений и правил, который не будет требовать нескольких проверок не рассматривается?
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
А разве не для этого существует permission?
Создаете, даете его разным ролям. Или даже списку юзеров.
Если есть некая логика, по которой выбираются роли и/или пользователи, то для этого есть не permission, а rules:
www.yiiframework.com/doc-2.0/guide-security-author...
Если не годится, по религиозным убеждениям, предложенное (хотя как по мне схема rbac yii2 покрывает любой каприз), тогда - берите в руки карандаш и пишите свой велосипед
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы