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

GetUserInformationByIdentityUserQuery

Назначение

Получение информации о пользователе по Identity Provider и ProviderUserId. Поиск идёт через UserIdentityEntity (связь UserId — Provider + ProviderUserId). Возвращает полные данные пользователя, включая Permissions и Roles.

Цели

  • Найти пользователя по провайдеру идентификации (Keycloak, и т.д.) и ID в провайдере
  • Получить UserEntity, UserIdentities, Permissions, Roles

Query: GetUserInformationByIdentityUserQuery

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

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

Result: GetUserInformationByIdentityUserQueryResult

ПолеТипОбязательноеОписание
UserIdGuidДаИдентификатор пользователя
TenantIdGuidДаИдентификатор тенанта
EmailstringДаEmail
PhoneNumberstring?НетНомер телефона
NameFullNameДаФИО
UserIdentitiesIReadOnlyCollection<ProviderIdPairDomainModel>ДаСвязи с Identity Providers
PermissionsIReadOnlyCollection<UserPermissionDomainModel>ДаКоды разрешений (scopes)
RolesIReadOnlyCollection<UserRoleDomainModel>ДаРоли (RoleId, RoleCode)

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

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

  1. Вызвать userIdentityEntityRepository.FindByProviderUserId (Provider, ProviderUserId).
  2. Если UserIdentityEntity не найдена — ошибка «Не удалось найти пользователя».
  3. Получить UserEntity через userEntityRepository.GetById.
  4. Загрузить UserIdentities, Roles, Permissions через IUserIdentitiesProvider, IUserRolesProvider, IUserPermissionsProvider.
  5. Сформировать GetUserInformationByIdentityUserQueryResult.
  6. Вернуть результат.

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

  • Пользователь не найден: возвращается ошибка «Не удалось найти пользователя» с метаданными Provider, ProviderUserId.

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

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

API

Internal API: GetUserInformationByIdentityUser