Я делаю аутентификацию / авторизацию общим способом, но у меня есть проблема, некоторые поведения системы зависят от роли пользователя, и один пользователь может иметь более одной роли.
Дело не только в том, что пользователь может / не может выполнять какое-то действие, но и в том, что само действие изменяется для каждой роли пользователя, существует множество метаданных, связанных с каждой ролью, и они не могут понять, как сохранить единство.
Если я объединю безопасность с бизнесом, связь будет очень высокой, и все станет грязным, а если хранить отдельные таблицы для каждого, я получу некоторые сущности в два раза, и я тоже получу грязный.
Одна небольшая часть метаданных:
Одно рабочее место, если младший может построить только базовую часть для одной работы только для одного клиента или отказаться от основной работы, запущенной другим младшим в том же клиенте
Если мастер может построить новую базовую деталь и исправить / управлять зданием, сделанным всеми младшими из одного клиента.
Если менеджер может сделать все для всех клиентов и контролировать основную работу.
Для каждой работы один младший должен выбрать одного связанного мастера, и один мастер должен выбрать одного менеджера, когда один младший получает оставленную работу, он становится владельцем, но когда мастер исправляет одну работу, владелец-создатель сохраняет право собственности.