GetUserInformationByIdentityUserQuery
Назначение
Получение информации о пользователе по Identity Provider и ProviderUserId. Поиск идёт через UserIdentityEntity (связь UserId — Provider + ProviderUserId). Возвращает полные данные пользователя, включая Permissions и Roles.
Цели
- Найти пользователя по провайдеру идентификации (Keycloak, и т.д.) и ID в провайдере
- Получить UserEntity, UserIdentities, Permissions, Roles
Входные данные
| Поле | Тип | Обязательное | Описание |
|---|
| TenantId | Guid | Да | Идентификатор тенанта |
| Provider | IdentityProvider | Да | Провайдер идентификации |
| ProviderUserId | string | Да | ID пользователя в провайдере |
| Поле | Тип | Обязательное | Описание |
|---|
| UserId | Guid | Да | Идентификатор пользователя |
| TenantId | Guid | Да | Идентификатор тенанта |
| Email | string | Да | Email |
| 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