Привет.
Есть стандартный набор:
"разрешения", это кирпичики системы прав, например "Управлять комментариями".
"роли", ролям отмечается какие разрешения им позволены(галками в админке). Эти роли могут добавляться динамично из админки.
"пользователь". А пользователям уже присваиваются роли(сколько угодно) и так определяется кто что может.
Сделано это поверх RBAC у Yii2.
Вот теперь думаю как получше организовать систему управления одними пользователями других.
Чтобы поболее покрывало реальные юзер кейсы.
Изменяемая информация на каждого пользователя тут: базовая инфа(*), такая как ник, пароль + его роли(**)
Можно, например, выделить такие права:
п1) назначать пользователям роли
п2) управление пользователями
п3) и для каждой роли создать по праву:
- управлять пользователями с Данной ролью X.
Workflow получится такое:
1) главный админ заходит на редактирование/удаление любого пользователя, тут без ограничений
2) Юзер без админских прав заходит только на страницу своего профиля и может редактировать свою базовую инфу (см.*)
2) Некий модератор(юзер с админскими правами) заходит:
2.а) на свой профиль, тоже видит только свою базовую инфу(*). Роли сам себе не может назначать.
2.б) заходит на чужой профиль.
И тут такая проверка:
Есть право п2) ?
Если да, то проверка по всем ролям редактируемого пользователя, чтобы у данного модератора
были права п3) на редактирование каждой его роли
Если и тут окей, то
- Показываем Базовую инфу(*) к редактированию
- Если есть право п1) то и можем установить роли, список которых также берется из п3)
В принципе такая система покроет такие проблемы например чтобы модераторы одного уровня не могли редактировать других модераторов.
Но может как получше сделать? Или есть какие ходовые юзеркейсы которые данная система не осилит?
_____________
There never was a struggle in the soul of a good man that was not hard