Несколько Ролей Для Одного Пользователя

Доброго дня всем.

Подскажите пожалуйста как реализовать следующий функционал:

С 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 то она будет иметь все права этих ролей но процесс проверки прав доступа усложнится! да и не забывайте про возможность зациклить данный процесс!

Теперь вроде понятно, что имелось в виду, но непонятно, в чем проблема :)

Переходите на БД-хранилище и назначайте конкретному пользователю конкретные элементы авторизации, в Вашем случае это будут предустановленные роли.

Полагаю, непонятки в том, что Вы хотите прямо в поле таблицы users записать роль: tbl_users.role = ‘admin’. А так не получится.