Отношение «многие ко многим» в сравнении с разрешением

#permissions #multi-tenant #user-permissions

#разрешения #мультитенант #пользователь-разрешения

Вопрос:

У пользователя есть company_id и отношения «многие ко многим» с задачами. У каждого пользователя есть роль. У каждой роли есть разрешения.

Администратор должен иметь возможность видеть все задачи в компании. Пользователь должен иметь возможность видеть только свои собственные задачи в компании.

Каковы подводные камни каждого подхода?

  1. Назначьте всех администраторов m2m при создании задачи
  2. Включите разрешение see_all_tasks как часть роли администратора

Ответ №1:

Учитывая, что у вас уже есть роли и разрешения, настроенные в вашем приложении. Вы должны назначать пользователям роли в компании, например, администраторы будут иметь Administrator роль во всех компаниях.

У любого пользователя в приложении будет роль для каждой компании, которая позволяет ему выполнять свою задачу в контексте компании.

Пример: я могу быть Admin для CompanyA и Enduser для CompanyB. Это должно дать вам желаемый результат.

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