RBAC для CRM

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Ответить
duda
Сообщения: 43
Зарегистрирован: 2015.07.06, 22:05

RBAC для CRM

Сообщение duda »

Здравствуйте,

Есть система в которой есть Директор, Менеджер, Клиент.
Есть права Смотреть клиентов, Редактировать клиентов, Писать Клиенту

В системе появились новые пользователи у которых появился доступ к управлению правами и ролями.
Для пользователей из фирмы 1 Роли остались прежние Директор, Менеджер, Клиент, а для других приобрели вид
Директор2, Менеджер2, ...

И получается с ростом фирм ростет количество ролей.

Нашел Attribute-based access control (ABAC) но с реализацией в yii2 нет
Возможно есть более простые варианты реализовать требуюемую логику с помощью RBAC?

Нужно что бы роли оставались теми же но в тоже самое время что бы фирмы могли редактировать permissions и rules для своих ролей, а не всей системы в целом?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: RBAC для CRM

Сообщение samdark »

То есть один пользователь может быть в одной фирме директором, а в другой клиентом?
duda
Сообщения: 43
Зарегистрирован: 2015.07.06, 22:05

Re: RBAC для CRM

Сообщение duda »

Нет, приношу извинения за кривое объяснение.

Есть фирма у которой есть менеджеры. Директор в этой фирме может назначать права менеджеру, бухгалтеру и тд.
В другой фирме роли имеют теже названия. Есть менеджера, директор, и другие роли. В этой фирме директор тоже назначает права своим менеджерам.

Система выстроена на проверке ролей и проверке прав.
Если с проверкой по правам путаницы нет то с ролями иначе.

Приходится к ролям в новой фирме добавлять индекс (менеджер22) что бы в итоге иметь возможность назначать им права.
Ролей в системе 10, получается что с каждой фирмой растет количество ролей.

Что касается проверки на роль то в записях присутствует role_id которая ссылается на базовую роль.
То есть Менеджера22 у которого role_id = Менеджер. Так и проверяется.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: RBAC для CRM

Сообщение samdark »

Система выстроена на проверке ролей и проверке прав.
По-хорошему, ваш код никогда не должен проверять роль. Только права.

Если сотрудник не может быть в двух фирмах сразу, то для того, чтобы проверять принадлежность сотрудника к определённой фирме есть rules + можно это делать прямо при выборках (select * from bla-bla where bla-bla.company_id = :userCompanyId).
duda
Сообщения: 43
Зарегистрирован: 2015.07.06, 22:05

Re: RBAC для CRM

Сообщение duda »

samdark писал(а): 2021.04.07, 16:32
Система выстроена на проверке ролей и проверке прав.
По-хорошему, ваш код никогда не должен проверять роль. Только права.

Если сотрудник не может быть в двух фирмах сразу, то для того, чтобы проверять принадлежность сотрудника к определённой фирме есть rules + можно это делать прямо при выборках (select * from bla-bla where bla-bla.company_id = :userCompanyId).
Как тогда менеджеру из 2х разных компаний добавлять права?
Только если роли у них различны. А именно manager_1, manager_2
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: RBAC для CRM

Сообщение samdark »

Поэтому я упомянул "Если сотрудник не может быть в двух фирмах сразу". Ну либо я предметную область не понял. Если права привязаны конкрнетному объекту, то придётся +- как вы сейчас делаете делать.
Ответить