RemoveScopeFromRoleCommand
Назначение
Удаление scope из роли по идентификатору связи RoleScopeReferenceEntity.Id. Требует разрешение Identity.Roles.Scopes.Remove.
Цели
- Проверить существование роли и связи RoleScopeReference
- Убедиться, что связь принадлежит указанной роли
- Удалить RoleScopeReferenceEntity
Command: RemoveScopeFromRoleCommand
Входные данные
| Поле | Тип | Обязательное | Описание |
|---|
| RoleId | long | Да | Идентификатор роли |
| ScopeReferenceId | Guid | Да | Идентификатор связи RoleScopeReferenceEntity.Id |
Result: RemoveScopeFromRoleCommandResult
| Поле | Тип | Обязательное | Описание |
|---|
| RoleName | string | Да | Название роли |
| ScopeName | string | Да | Название scope |
Бизнес-логика
Основной сценарий
- Начать транзакцию (ReadCommitted).
- Получить RoleEntity. Если не найдена — ошибка «Роль не найдена».
- Получить RoleScopeReferenceEntity по ScopeReferenceId. Если не найдена — ошибка «Связь роли и scope не найдена».
- Проверить, что scopeReference.RoleId == request.RoleId; иначе ошибка «Связь не принадлежит указанной роли».
- Получить RoleScopeEntity для ScopeName.
- Удалить RoleScopeReferenceEntity.
- Commit.
- Вернуть RoleName и ScopeName.
Альтернативные сценарии
- Роль не найдена: ошибка «Роль не найдена».
- Связь не найдена: ошибка «Связь роли и scope не найдена».
- Связь не принадлежит роли: ошибка «Связь не принадлежит указанной роли».
Диаграмма алгоритма
Связанные сущности