GetEmployeeRolesListQuery
Назначение
Получение списка ролей сотрудника с детализацией прав (permissions): scopes с учётом RoleTemplate и Include/Exclude. Используется для редактирования прав сотрудника. Требует разрешение Identity.Employees.View.
Цели
- Загрузить роли пользователя через UserRoleReferenceEntity
- Для каждой роли: базовые scopes из RoleTemplateScopeReference + переопределения (Include/Exclude) из RoleScopeReferenceEntity
- Вернуть роли с Permissions (Group, ScopeName, ScopeCode)
Query: GetEmployeeRolesListQuery
Входные данные
| Поле | Тип | Обязательное | Описание |
|---|
| UserId | Guid | Да | Идентификатор пользователя |
Result: GetEmployeeRolesListQueryResult
| Поле | Тип | Обязательное | Описание |
|---|
| Entries | IReadOnlyCollection<GetEmployeeRolesListQueryResultEntry> | Да | Список ролей с правами |
ResultEntry: GetEmployeeRolesListQueryResultEntry
| Поле | Тип | Обязательное | Описание |
|---|
| RoleId | long | Да | Идентификатор роли |
| Name | string | Да | Название роли |
| Code | string | Да | Код роли |
| Permissions | IReadOnlyCollection<GetEmployeeRolesListPermissionDomainModel> | Да | Права роли |
GetEmployeeRolesListPermissionDomainModel
| Поле | Тип | Обязательное | Описание |
|---|
| Group | RoleScopeGroupDomainModel | Да | Группа прав (GroupId, GroupName) |
| ScopeName | string | Да | Название scope |
| ScopeCode | string | Да | Код scope |
Бизнес-логика
Основной сценарий
- Загрузить UserRoleReferenceEntity через
userRoleReferenceEntityRepository.GetByUserId.
- Если ролей нет — вернуть Entries = [].
- Загрузить RoleEntity, RoleTemplateScopeReferenceEntity, RoleScopeReferenceEntity.
- Для каждой роли: базовые scopes из шаблона + Include/Exclude из RoleScopeReferenceEntity.
- Загрузить RoleScopeEntity и RoleScopeGroupEntity.
- Сформировать Entries с Permissions, отсортированными по GroupId и ScopeName.
- Вернуть результат.
Альтернативные сценарии
- У сотрудника нет ролей — Entries = [], без ошибки.
Диаграмма алгоритма
Связанные сущности