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
Входные данные
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| TenantId | Guid | Да | Идентификатор тенанта |
| KeycloakUserId | Guid | Да | ID пользователя в Keycloak |
Result: GetUserInformationByKeycloakIdQueryResult
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| UserId | Guid | Да | Идентификатор пользователя |
| TenantId | Guid | Да | Идентификатор тенанта |
| string | Да | ||
| PhoneNumber | string? | Нет | Номер телефона |
| Name | FullName | Да | ФИО |
| KeycloakUserId | string | Да | ID в Keycloak (ToString) |
| Permissions | IReadOnlyCollection<UserPermissionDomainModel> | Да | Коды разрешений |
| Roles | IReadOnlyCollection<UserRoleDomainModel> | Да | Роли (RoleId, RoleCode) |
Бизнес-логика
Основной сценарий
- Преобразовать KeycloakUserId в string ("D" format).
- Вызвать
userIdentityEntityRepository.FindByProviderUserId(Keycloak, keycloakUserId). - Если не найдена — ошибка «Не удалось найти пользователя».
- Проверить TenantId: userIdentity.TenantId должен совпадать с request.TenantId; иначе ошибка «Пользователь не принадлежит указанному тенанту».
- Получить UserEntity через
userEntityRepository.GetById. - Загрузить UserRoleReferenceEntity, RoleEntity, RoleScopeReferenceEntity, RoleScopeEntity для формирования Roles и Permissions.
- Вернуть результат.
Альтернативные сценарии
- Пользователь не найден: ошибка «Не удалось найти пользователя» с метаданными KeycloakUserId, TenantId.
- Пользователь из другого тенанта: ошибка «Пользователь не принадлежит указанному тенанту».
Диаграмма алгоритма
Связанные сущности
- UserEntity
- UserIdentityEntity
- UserRoleReferenceEntity
- RoleEntity
- RoleScopeReferenceEntity
- RoleScopeEntity