Здравствуйте,
Есть система в которой есть Директор, Менеджер, Клиент.
Есть права Смотреть клиентов, Редактировать клиентов, Писать Клиенту
В системе появились новые пользователи у которых появился доступ к управлению правами и ролями.
Для пользователей из фирмы 1 Роли остались прежние Директор, Менеджер, Клиент, а для других приобрели вид
Директор2, Менеджер2, ...
И получается с ростом фирм ростет количество ролей.
Нашел Attribute-based access control (ABAC) но с реализацией в yii2 нет
Возможно есть более простые варианты реализовать требуюемую логику с помощью RBAC?
Нужно что бы роли оставались теми же но в тоже самое время что бы фирмы могли редактировать permissions и rules для своих ролей, а не всей системы в целом?
RBAC для CRM
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: RBAC для CRM
То есть один пользователь может быть в одной фирме директором, а в другой клиентом?
Нравится Yii? Давайте сделаем его лучше!.
Re: RBAC для CRM
Нет, приношу извинения за кривое объяснение.
Есть фирма у которой есть менеджеры. Директор в этой фирме может назначать права менеджеру, бухгалтеру и тд.
В другой фирме роли имеют теже названия. Есть менеджера, директор, и другие роли. В этой фирме директор тоже назначает права своим менеджерам.
Система выстроена на проверке ролей и проверке прав.
Если с проверкой по правам путаницы нет то с ролями иначе.
Приходится к ролям в новой фирме добавлять индекс (менеджер22) что бы в итоге иметь возможность назначать им права.
Ролей в системе 10, получается что с каждой фирмой растет количество ролей.
Что касается проверки на роль то в записях присутствует role_id которая ссылается на базовую роль.
То есть Менеджера22 у которого role_id = Менеджер. Так и проверяется.
Есть фирма у которой есть менеджеры. Директор в этой фирме может назначать права менеджеру, бухгалтеру и тд.
В другой фирме роли имеют теже названия. Есть менеджера, директор, и другие роли. В этой фирме директор тоже назначает права своим менеджерам.
Система выстроена на проверке ролей и проверке прав.
Если с проверкой по правам путаницы нет то с ролями иначе.
Приходится к ролям в новой фирме добавлять индекс (менеджер22) что бы в итоге иметь возможность назначать им права.
Ролей в системе 10, получается что с каждой фирмой растет количество ролей.
Что касается проверки на роль то в записях присутствует role_id которая ссылается на базовую роль.
То есть Менеджера22 у которого role_id = Менеджер. Так и проверяется.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: RBAC для CRM
По-хорошему, ваш код никогда не должен проверять роль. Только права.Система выстроена на проверке ролей и проверке прав.
Если сотрудник не может быть в двух фирмах сразу, то для того, чтобы проверять принадлежность сотрудника к определённой фирме есть rules + можно это делать прямо при выборках (select * from bla-bla where bla-bla.company_id = :userCompanyId).
Нравится Yii? Давайте сделаем его лучше!.
Re: RBAC для CRM
Как тогда менеджеру из 2х разных компаний добавлять права?samdark писал(а): ↑2021.04.07, 16:32По-хорошему, ваш код никогда не должен проверять роль. Только права.Система выстроена на проверке ролей и проверке прав.
Если сотрудник не может быть в двух фирмах сразу, то для того, чтобы проверять принадлежность сотрудника к определённой фирме есть rules + можно это делать прямо при выборках (select * from bla-bla where bla-bla.company_id = :userCompanyId).
Только если роли у них различны. А именно manager_1, manager_2
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: RBAC для CRM
Поэтому я упомянул "Если сотрудник не может быть в двух фирмах сразу". Ну либо я предметную область не понял. Если права привязаны конкрнетному объекту, то придётся +- как вы сейчас делаете делать.
Нравится Yii? Давайте сделаем его лучше!.