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

DeleteRoleCommand

Назначение

Удаление роли. Опционально переназначение пользователей на NewRoleId. Удаляет UserRoleReferenceEntity, RoleScopeReferenceEntity и RoleEntity. Требует разрешение Identity.Roles.Remove.

Цели

  • Удалить RoleEntity
  • Удалить RoleScopeReferenceEntity и UserRoleReferenceEntity
  • Опционально: переназначить пользователей на NewRoleId перед удалением связей

Command: DeleteRoleCommand

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

ПолеТипОбязательноеОписание
RoleIdlongДаИдентификатор роли для удаления
NewRoleIdlong?НетИдентификатор новой роли для переназначения пользователей

Result: DeleteRoleCommandResult

ПолеТипОбязательноеОписание
RoleNamestringДаНазвание удалённой роли

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

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

  1. Начать транзакцию (ReadCommitted).
  2. Получить RoleEntity. Если не найдена — ошибка «Роль не найдена».
  3. Проверить TenantId.
  4. Если NewRoleId указан: проверить существование и TenantId новой роли.
  5. Если NewRoleId указан: для каждого UserRoleReference удаляемой роли создать связь с NewRoleId (если её ещё нет).
  6. Удалить UserRoleReferenceEntity по RoleId.
  7. Удалить RoleScopeReferenceEntity по RoleId.
  8. Удалить RoleEntity.
  9. Commit.
  10. Вернуть RoleName.

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

  • Роль не найдена: ошибка «Роль не найдена».
  • Роль не принадлежит тенанту: ошибка «Роль не принадлежит текущему тенанту».
  • NewRoleId не найдена: ошибка «Новая роль для переназначения не найдена».
  • NewRoleId не принадлежит тенанту: ошибка «Новая роль для переназначения не принадлежит текущему тенанту».

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

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