Мне поручено разработать новую модель доступа на основе ролей для нашей системы.
Требования заключаются в следующем:
Пользователь может войти в систему и будет иметь разные роли в зависимости от того, какого клиента он просматривает.
Пользователь может входить в команды.
На мой взгляд, это самая сложная часть. В зависимости от того, какой проект просматривается, пользователю могут быть назначены совершенно новые роли.
Есть ли хорошая, последовательная модель, чтобы справиться со всем этим, или мне нужно будет создать свою собственную?
Это не похоже на то, что это будет так просто, поскольку не похоже, что вы сможете воспользоваться преимуществами вложенных групп, если все проекты изолированы друг от друга, и пользователи будут иметь совершенно разные роли в каждый проект. Я бы рекомендовал пометить группы с помощью номера / имени проекта И роли в имени группы. Например:
Таким образом, пользователь A может быть членом группы PM Project 1 и группы QA Project 2 и иметь доступ на основе этого членства.
Я не совсем уверен, какова цель команд и хотите ли вы разбить доступ / уведомления по командам или нет, так что это может потребовать немного дополнительных размышлений.