Назначение
Удаление роли. Опционально переназначение пользователей на NewRoleId. Удаляет UserRoleReferenceEntity, RoleScopeReferenceEntity и RoleEntity. Требует разрешение Identity.Roles.Remove.
Цели
- Удалить RoleEntity
- Удалить RoleScopeReferenceEntity и UserRoleReferenceEntity
- Опционально: переназначить пользователей на NewRoleId перед удалением связей
Command: DeleteRoleCommand
Входные данные
| Поле | Тип | Обязательное | Описание |
|---|
| RoleId | long | Да | Идентификатор роли для удаления |
| NewRoleId | long? | Нет | Идентификатор новой роли для переназначения пользователей |
Result: DeleteRoleCommandResult
| Поле | Тип | Обязательное | Описание |
|---|
| RoleName | string | Да | Название удалённой роли |
Бизнес-логика
Основной сценарий
- Начать транзакцию (ReadCommitted).
- Получить RoleEntity. Если не найдена — ошибка «Роль не найдена».
- Проверить TenantId.
- Если NewRoleId указан: проверить существование и TenantId новой роли.
- Если NewRoleId указан: для каждого UserRoleReference удаляемой роли создать связь с NewRoleId (если её ещё нет).
- Удалить UserRoleReferenceEntity по RoleId.
- Удалить RoleScopeReferenceEntity по RoleId.
- Удалить RoleEntity.
- Commit.
- Вернуть RoleName.
Альтернативные сценарии
- Роль не найдена: ошибка «Роль не найдена».
- Роль не принадлежит тенанту: ошибка «Роль не принадлежит текущему тенанту».
- NewRoleId не найдена: ошибка «Новая роль для переназначения не найдена».
- NewRoleId не принадлежит тенанту: ошибка «Новая роль для переназначения не принадлежит текущему тенанту».
Диаграмма алгоритма
Связанные сущности