GetUserInformationByProviderIdsQuery
Назначение
Получение информации о пользователях по списку пар (Provider, ProviderUserId). Поиск через UserIdentityEntity.FindByProviderUserId для каждой пары. Возвращает полные данные (UserEntity + UserIdentities, Permissions, Roles).
Цели
- Найти пользователей по нескольким парам (Provider, ProviderUserId)
- Получить UserEntity и связанные данные для каждого найденного
Входные данные
| Поле | Тип | Обязательное | Описание |
|---|
| TenantId | Guid | Да | Идентификатор тенанта |
| ProviderUsers | IReadOnlyCollection<ProviderIdPairDomainModel> | Да | Пары (Provider, ProviderUserId) |
ProviderIdPairDomainModel
| Поле | Тип | Обязательное | Описание |
|---|
| Provider | IdentityProvider | Да | Провайдер идентификации |
| ProviderUserId | string | Да | ID пользователя в провайдере |
| Поле | Тип | Обязательное | Описание |
|---|
| Entries | IReadOnlyCollection<GetUserInformationByIdentityUserQueryResult> | Да | Список пользователей |
ResultEntry: GetUserInformationByIdentityUserQueryResult
Формат аналогичен GetUserInformationByIdentityUser (UserId, TenantId, Email, PhoneNumber, Name, UserIdentities, Permissions, Roles).
Бизнес-логика
Основной сценарий
- Если ProviderUsers пустая — вернуть Entries = [].
- Для каждой пары вызвать
userIdentityEntityRepository.FindByProviderUserId.
- Собрать UserIds из найденных UserIdentityEntity.
- Если UserIds пустой — вернуть Entries = [].
- Получить UserEntity через
userEntityRepository.GetByIds.
- Загрузить UserIdentities, Roles, Permissions через провайдеры.
- Сформировать Entries.
- Вернуть результат.
Альтернативные сценарии
- Пустой ProviderUsers или отсутствие совпадений — Entries = [], без ошибки.
Диаграмма алгоритма
Связанные сущности
API
Internal API: GetUserInformationByProviderIds