Динамическое создание ролей и разрешений RBAC

Я ищу методологию для генерации новых ролей RBAC по требованию. Я разрабатываю систему RBAC, которая будет иметь два основных параметра. Вместо того, чтобы просто иметь пользователя, связанного с ролью, и эту роль, связанную с группой разрешений; пользователь может быть связан с ролью «для конкретного проекта», и тогда пользователь может иметь разрешения этой роли только для этого проекта (или для других проектов, для которых пользователь выполняет эту роль). Пользователь может иметь определенную роль в одном проекте и другую роль в другом проекте; разрешения, предоставляемые роли, согласованы для каждого проекта; и разрешения пользователя для проекта основаны на роли, которую пользователь имеет в проекте.

В ответ на систему RBAC с двумя параметрами , lmontrieux предложил использовать разные роли для разных проектов. Например, если роль «admin» используется в проектах «P1» и «P2», затем создайте роль «P1: admin» и другую роль «P2: admin». Это похоже на путь, но я не хочу создавать статический набор ролей. Прежде всего, будет несколько проектов, и я не должен писать несколько наборов разрешений, которые одинаковы во всех отношениях, кроме идентификатора проекта. Во-вторых, и что более важно, проекты «P3», «P4» и «P5» еще не существуют, и когда они существуют, они будут созданы пользователем. Поскольку я не могу создавать статические разрешения на основе ролей для непредсказуемого количества будущих проектов, мне нужно разработать метод генерации роли, зависящей от проекта, на основе стандартного стандарта.

Я предполагаю, что это хорошее приложение для использования объектов и классов, но я не уверен, как его структурировать.