Назначение
Добавление scope к роли. Создаёт RoleScopeReferenceEntity (RoleId, ScopeId, Action = Include или Exclude). Требует разрешение Identity.Roles.Scopes.Create.
Цели
- Проверить существование роли и scope
- Проверить отсутствие пары (RoleId, ScopeId) в RoleScopeReferenceEntity
- Создать RoleScopeReferenceEntity
Command: AddScopeToRoleCommand
Входные данные
| Поле | Тип | Обязательное | Описание |
|---|
| RoleId | long | Да | Идентификатор роли |
| ScopeId | long | Да | Идентификатор scope |
| Action | ScopeAction | Да | Include или Exclude |
Result: AddScopeToRoleCommandResult
| Поле | Тип | Обязательное | Описание |
|---|
| ScopeReferenceId | Guid | Да | Идентификатор созданной связи RoleScopeReference |
Бизнес-логика
Основной сценарий
- Начать транзакцию (ReadCommitted).
- Получить RoleEntity. Если не найдена — ошибка «Роль не найдена».
- Получить RoleScopeEntity. Если не найден — ошибка «Scope не найден».
- Проверить отсутствие пары (RoleId, ScopeId) в RoleScopeReferenceEntity.
- Создать RoleScopeReferenceEntity.
- Commit.
- Вернуть ScopeReferenceId.
Альтернативные сценарии
- Роль не найдена: ошибка «Роль не найдена».
- Scope не найден: ошибка «Scope не найден».
- Scope уже добавлен: ошибка «Данный scope уже добавлен к роли».
Диаграмма алгоритма
Связанные сущности