Ejemplo n.º 1
0
        /// <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));
        }
Ejemplo n.º 2
0
        /// <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)));
        }