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

CloneRoleCommand

Назначение

Клонирование роли: создание новой роли с тем же RoleTemplateId и копированием всех RoleScopeReferenceEntity (ScopeId, Action). Требует разрешение Identity.Roles.Create.

Цели

  • Создать новую RoleEntity (Name = NewName, Code = {sourceCode}_copy_{unixTimestamp})
  • Скопировать RoleScopeReferenceEntity из исходной роли

Command: CloneRoleCommand

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

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

Result: CloneRoleCommandResult

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

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

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

  1. Начать транзакцию (ReadCommitted).
  2. Получить исходную RoleEntity. Если не найдена — ошибка «Роль не найдена».
  3. Загрузить RoleScopeReferenceEntity исходной роли.
  4. Сгенерировать Code: {sourceCode}_copy_{unixTimestamp} (фигурные скобки — плейсхолдеры для переменных).
  5. Создать новую RoleEntity (Name = NewName, Code = newCode, RoleTemplateId = source.RoleTemplateId).
  6. Создать RoleScopeReferenceEntity для каждого scope (ScopeId, Action из исходной роли).
  7. Commit.
  8. Вернуть NewRoleId.

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

  • Роль не найдена: ошибка «Роль не найдена».

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

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