[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Управление юзерами в системе со многими ролями
Michael
Привет.
Есть стандартный набор:
"разрешения", это кирпичики системы прав, например "Управлять комментариями".
"роли", ролям отмечается какие разрешения им позволены(галками в админке). Эти роли могут добавляться динамично из админки.
"пользователь". А пользователям уже присваиваются роли(сколько угодно) и так определяется кто что может.
Сделано это поверх 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
Valick
Michael, линуксовая иерархия прав вроде же и выдумывать ничего не надо


_____________
Стимулятор ~yoomoney - 41001303250491
inpost
Michael
Цитата
1) главный админ заходит на редактирование/удаление любого пользователя, тут без ограничений

Никаких удалений из Базы Данных. Только перемещаем в удалённую таблицу или помечаем как удалённый.

А в целом, мне кажется, что эта схема лишь самое простое из данной задачи и проблем не увидел. Вот Valick пишет про Юниксовую систему, *всем доступно*, *доступно ролям*, *доступно владельцу*. Всем мы в коде не пишем, владельцу if(я == мои_данные), в итого остаются *группы*, они же *роли*. Ты же тоже самое и написал, собственно.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Michael
К этой системе просто у меня есть требования:
- она должна иметь дружественный пользователю интерфейс. Это часть ядра cmf.
- должна покрыть как можно больше реальных типичных ситуаций, чтобы при уже специфичных хотелках предметной области, эти хотелки вписались в эту систему, без хакания ядра.

Смотрел в друпале 7, но там сильно просто - есть право "Управлять пользователями", у кого оно есть тот может забанить хоть админа. А назначение ролей там захардкодено главному админу.

_____________
There never was a struggle in the soul of a good man that was not hard
Michael
Ну и если по аналогии с линуксовой системой , то какие разрешения надо определить в БД ?


_____________
There never was a struggle in the soul of a good man that was not hard
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.