GetUserInformationByIdentityUserQuery
Назначение
Получение информации о пользователе по Identity Provider и ProviderUserId. Поиск идёт через UserIdentityEntity (связь UserId — Provider + ProviderUserId). Возвращает полные данные пользователя, включая Permissions и Roles.
Цели
- Найти пользователя по провайдеру идентификации (Keycloak, и т.д.) и ID в провайдере
- Получить UserEntity, UserIdentities, Permissions, Roles
Query: GetUserInformationByIdentityUserQuery
Входные данные
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| TenantId | Guid | Да | Идентификатор тенанта |
| Provider | IdentityProvider | Да | Провайдер идентификации |
| ProviderUserId | string | Да | ID пользователя в провайдере |
Result: GetUserInformationByIdentityUserQueryResult
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| UserId | Guid | Да | Идентификатор пользователя |
| TenantId | Guid | Да | Идентификатор тенанта |
| string | Да | ||
| PhoneNumber | string? | Нет | Номер телефона |
| Name | FullName | Да | ФИО |
| UserIdentities | IReadOnlyCollection<ProviderIdPairDomainModel> | Да | Связи с Identity Providers |
| Permissions | IReadOnlyCollection<UserPermissionDomainModel> | Да | Коды разрешений (scopes) |
| Roles | IReadOnlyCollection<UserRoleDomainModel> | Да | Роли (RoleId, RoleCode) |
Бизнес-логика
Основной сценарий
- Вызвать
userIdentityEntityRepository.FindByProviderUserId(Provider, ProviderUserId). - Если UserIdentityEntity не найдена — ошибка «Не удалось найти пользователя».
- Получить UserEntity через
userEntityRepository.GetById. - Загрузить UserIdentities, Roles, Permissions через IUserIdentitiesProvider, IUserRolesProvider, IUserPermissionsProvider.
- Сформировать GetUserInformationByIdentityUserQueryResult.
- Вернуть результат.
Альтернативные сценарии
- Пользователь не найден: возвращается ошибка «Не удалось найти пользователя» с метаданными Provider, ProviderUserId.
Диаграмма алгоритма
Связанные сущности
API
Internal API: GetUserInformationByIdentityUser
Обратные ссылки
Автоссылки: где используется этот документ.
- Домен (CQRS) (3): GetUserInformationByKeycloakIdQuery, GetUserInformationByProviderIdsQuery, Internal Domain
- API (1): UsersController (Internal)