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

GetEmployeeRolesListQuery

Назначение

Получение списка ролей сотрудника с детализацией прав (permissions): scopes с учётом RoleTemplate и Include/Exclude. Используется для редактирования прав сотрудника. Требует разрешение Identity.Employees.View.

Цели

  • Загрузить роли пользователя через UserRoleReferenceEntity
  • Для каждой роли: базовые scopes из RoleTemplateScopeReference + переопределения (Include/Exclude) из RoleScopeReferenceEntity
  • Вернуть роли с Permissions (Group, ScopeName, ScopeCode)

Query: GetEmployeeRolesListQuery

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

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

Result: GetEmployeeRolesListQueryResult

ПолеТипОбязательноеОписание
EntriesIReadOnlyCollection<GetEmployeeRolesListQueryResultEntry>ДаСписок ролей с правами

ResultEntry: GetEmployeeRolesListQueryResultEntry

ПолеТипОбязательноеОписание
RoleIdlongДаИдентификатор роли
NamestringДаНазвание роли
CodestringДаКод роли
PermissionsIReadOnlyCollection<GetEmployeeRolesListPermissionDomainModel>ДаПрава роли

GetEmployeeRolesListPermissionDomainModel

ПолеТипОбязательноеОписание
GroupRoleScopeGroupDomainModelДаГруппа прав (GroupId, GroupName)
ScopeNamestringДаНазвание scope
ScopeCodestringДаКод scope

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

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

  1. Загрузить UserRoleReferenceEntity через userRoleReferenceEntityRepository.GetByUserId.
  2. Если ролей нет — вернуть Entries = [].
  3. Загрузить RoleEntity, RoleTemplateScopeReferenceEntity, RoleScopeReferenceEntity.
  4. Для каждой роли: базовые scopes из шаблона + Include/Exclude из RoleScopeReferenceEntity.
  5. Загрузить RoleScopeEntity и RoleScopeGroupEntity.
  6. Сформировать Entries с Permissions, отсортированными по GroupId и ScopeName.
  7. Вернуть результат.

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

  • У сотрудника нет ролей — Entries = [], без ошибки.

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

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