Перейти к основному содержимому

RemoveScopeFromRoleCommand

Назначение

Удаление scope из роли по идентификатору связи RoleScopeReferenceEntity.Id. Требует разрешение Identity.Roles.Scopes.Remove.

Цели

  • Проверить существование роли и связи RoleScopeReference
  • Убедиться, что связь принадлежит указанной роли
  • Удалить RoleScopeReferenceEntity

Command: RemoveScopeFromRoleCommand

Входные данные

ПолеТипОбязательноеОписание
RoleIdlongДаИдентификатор роли
ScopeReferenceIdGuidДаИдентификатор связи RoleScopeReferenceEntity.Id

Result: RemoveScopeFromRoleCommandResult

ПолеТипОбязательноеОписание
RoleNamestringДаНазвание роли
ScopeNamestringДаНазвание scope

Бизнес-логика

Основной сценарий

  1. Начать транзакцию (ReadCommitted).
  2. Получить RoleEntity. Если не найдена — ошибка «Роль не найдена».
  3. Получить RoleScopeReferenceEntity по ScopeReferenceId. Если не найдена — ошибка «Связь роли и scope не найдена».
  4. Проверить, что scopeReference.RoleId == request.RoleId; иначе ошибка «Связь не принадлежит указанной роли».
  5. Получить RoleScopeEntity для ScopeName.
  6. Удалить RoleScopeReferenceEntity.
  7. Commit.
  8. Вернуть RoleName и ScopeName.

Альтернативные сценарии

  • Роль не найдена: ошибка «Роль не найдена».
  • Связь не найдена: ошибка «Связь роли и scope не найдена».
  • Связь не принадлежит роли: ошибка «Связь не принадлежит указанной роли».

Диаграмма алгоритма

Связанные сущности