#permissions #multi-tenant #user-permissions
#разрешения #мультитенант #пользователь-разрешения
Вопрос:
У пользователя есть company_id и отношения «многие ко многим» с задачами. У каждого пользователя есть роль. У каждой роли есть разрешения.
Администратор должен иметь возможность видеть все задачи в компании. Пользователь должен иметь возможность видеть только свои собственные задачи в компании.
Каковы подводные камни каждого подхода?
- Назначьте всех администраторов m2m при создании задачи
- Включите разрешение see_all_tasks как часть роли администратора
Ответ №1:
Учитывая, что у вас уже есть роли и разрешения, настроенные в вашем приложении. Вы должны назначать пользователям роли в компании, например, администраторы будут иметь Administrator
роль во всех компаниях.
У любого пользователя в приложении будет роль для каждой компании, которая позволяет ему выполнять свою задачу в контексте компании.
Пример: я могу быть Admin
для CompanyA и Enduser
для CompanyB. Это должно дать вам желаемый результат.
В случае наличия консолидированного списка задач, отображаемых во всех компаниях, я буду агрегировать роли для каждой задачи на основе идентификатора компании, а затем применять разрешения.