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

GetUserInformationByKeycloakIdQuery

Устаревший метод

Метод будет удалён. Используйте GetUserInformationByIdentityUser с Provider = Keycloak и ProviderUserId = KeycloakUserId.ToString("D").

Назначение

Получение пользователя по Keycloak UserId (Guid). Реализовано как поиск в UserIdentityEntity по Provider = Keycloak и ProviderUserId = KeycloakUserId.ToString("D").

Цели

  • Найти пользователя по Keycloak UserId
  • Вернуть UserEntity, Permissions, Roles (без UserIdentities в формате ProviderIdPair)

Query: GetUserInformationByKeycloakIdQuery

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

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

Result: GetUserInformationByKeycloakIdQueryResult

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

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

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

  1. Преобразовать KeycloakUserId в string ("D" format).
  2. Вызвать userIdentityEntityRepository.FindByProviderUserId (Keycloak, keycloakUserId).
  3. Если не найдена — ошибка «Не удалось найти пользователя».
  4. Проверить TenantId: userIdentity.TenantId должен совпадать с request.TenantId; иначе ошибка «Пользователь не принадлежит указанному тенанту».
  5. Получить UserEntity через userEntityRepository.GetById.
  6. Загрузить UserRoleReferenceEntity, RoleEntity, RoleScopeReferenceEntity, RoleScopeEntity для формирования Roles и Permissions.
  7. Вернуть результат.

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

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

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

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

API

Internal API: GetUserInformationByKeycloakId