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

GetUserInformationByProviderIdsQuery

Назначение

Получение информации о пользователях по списку пар (Provider, ProviderUserId). Поиск через UserIdentityEntity.FindByProviderUserId для каждой пары. Возвращает полные данные (UserEntity + UserIdentities, Permissions, Roles).

Цели

  • Найти пользователей по нескольким парам (Provider, ProviderUserId)
  • Получить UserEntity и связанные данные для каждого найденного

Query: GetUserInformationByProviderIdsQuery

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

ПолеТипОбязательноеОписание
TenantIdGuidДаИдентификатор тенанта
ProviderUsersIReadOnlyCollection<ProviderIdPairDomainModel>ДаПары (Provider, ProviderUserId)

ProviderIdPairDomainModel

ПолеТипОбязательноеОписание
ProviderIdentityProviderДаПровайдер идентификации
ProviderUserIdstringДаID пользователя в провайдере

Result: GetUserInformationByProviderIdsQueryResult

ПолеТипОбязательноеОписание
EntriesIReadOnlyCollection<GetUserInformationByIdentityUserQueryResult>ДаСписок пользователей

ResultEntry: GetUserInformationByIdentityUserQueryResult

Формат аналогичен GetUserInformationByIdentityUser (UserId, TenantId, Email, PhoneNumber, Name, UserIdentities, Permissions, Roles).

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

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

  1. Если ProviderUsers пустая — вернуть Entries = [].
  2. Для каждой пары вызвать userIdentityEntityRepository.FindByProviderUserId.
  3. Собрать UserIds из найденных UserIdentityEntity.
  4. Если UserIds пустой — вернуть Entries = [].
  5. Получить UserEntity через userEntityRepository.GetByIds.
  6. Загрузить UserIdentities, Roles, Permissions через провайдеры.
  7. Сформировать Entries.
  8. Вернуть результат.

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

  • Пустой ProviderUsers или отсутствие совпадений — Entries = [], без ошибки.

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

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

API

Internal API: GetUserInformationByProviderIds