/// <inheritdoc /> public Task <ResourceOwner?> Get(ExternalAccountLink externalAccount, CancellationToken cancellationToken) { if (externalAccount == null) { throw new ArgumentNullException(nameof(externalAccount)); } var user = _users.FirstOrDefault( u => u.ExternalLogins != null && u.ExternalLogins.Any( e => e.Subject == externalAccount.Subject && e.Issuer == externalAccount.Issuer)); return(Task.FromResult(user)); }
/// <inheritdoc /> public async Task <ResourceOwner?> Get(ExternalAccountLink externalAccount, CancellationToken cancellationToken) { var externalAccountSubject = externalAccount.Subject; var externalAccountIssuer = externalAccount.Issuer; await using var session = _sessionFactory(); var ro = await session.Query <ResourceOwner>() .Where(x => x.ExternalLogins.Any(e => e.Subject == externalAccountSubject)) .ToListAsync(cancellationToken) .ConfigureAwait(false); return(ro.SingleOrDefault( x => x.ExternalLogins.Any( e => e.Subject == externalAccountSubject && e.Issuer == externalAccountIssuer))); }