Страница 1 из 1

RBAC для CRM

Добавлено: 2021.04.05, 10:01
duda
Здравствуйте,

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

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

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

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

Нужно что бы роли оставались теми же но в тоже самое время что бы фирмы могли редактировать permissions и rules для своих ролей, а не всей системы в целом?

Re: RBAC для CRM

Добавлено: 2021.04.05, 20:22
samdark
То есть один пользователь может быть в одной фирме директором, а в другой клиентом?

Re: RBAC для CRM

Добавлено: 2021.04.06, 10:02
duda
Нет, приношу извинения за кривое объяснение.

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

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

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

Что касается проверки на роль то в записях присутствует role_id которая ссылается на базовую роль.
То есть Менеджера22 у которого role_id = Менеджер. Так и проверяется.

Re: RBAC для CRM

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

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

Re: RBAC для CRM

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

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

Re: RBAC для CRM

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