Подскажите пожалуйста как реализовать следующий функционал:
С RBAC, и сохранением иерархии ролей в файле я разобрался в полной мере, но не могу додуматься (и найти) как сделать следующее. Предположим, у нас есть роли, и ВООБЩЕ не связанные между собой операции.
[list=1]
[*]Менеджер
Операция 1
Операция 2
[*]Оператор
Операция 3
Операция 4
[*]Аналитик
Операция 5
Операция 6
[*]Админ
Операция 1
Операция 2
Операция 3
Операция 4
Операция 5
Операция 6
[/list]
Мне нужно иметь возможность назначать юзерам не одну роль, будь то менеджер, аналитик, или оператор, а несколько…
т.е. Аналитик + оператор, Оператор + Менеджер и т.д… да, можно создать какие-то промежуточные роли, которые будут включать в себя нужные операции, но что если ролей не три (админа не считаю), как в примере, а 5-10-100…?
делите операции по задачам, а их уже назначайте ролям.
Т. е. не "Аналитик + оператор, Оператор + Менеджер", а что-то вроде задач "управление цифрами, управление механизмами, управление людьми" и ролей "повелитель цифр и механизмов", …
Читал эту замечательную статью, спасибо… и за ответ спасибо, но вы, видимо, меня не до конца поняли
Попытаюсь пояснить подробней… Есть админка, в которой админ может добавлять пользователя системы, и назначать ему роль…
Роли есть вполне определенные: Роль_1, Роль_2, Роль_3, Роль_4, Роль_5, описанные в созданном мной auth.php. Если бы на форме они отображались в виде выпадающего списка, то никаких проблем бы не было… назначил юзеру роль - и пошел создавать остальных, НО… на форме мультиселект… т.е. у юзера может быть НЕСКОЛЬКО ролей, и роли эти никак не связаны между собой, чтобы можно было построить какую-либо иерархию…
т.е. если логически описать зависимость ролей друг от друга, не получится так, что Роль_1 < Роль_2 < Роль_3 < Роль_4 < Роль_5…
это не Гость < Пользователь < Модератор < Админ…
это Роль_1 = Роль_3 = Роль_3 = Роль_4 = Роль_5…
они по сути равнозначны, позволяют работать с АБСОЛЮТНО РАЗНЫМ функционалом приложения… но пользователь может иметь доступ к различным его частям в зависимости от желания админа, его добавляющего в систему.
понятие роли это формальность есть право доступа которое может наследовать другие права доступа
если вы установите что Роль_5 наследует Роль_1 Роль_3 Роль_3 Роль_4 то она будет иметь все права этих ролей но процесс проверки прав доступа усложнится! да и не забывайте про возможность зациклить данный процесс!