public async Task <UpdateResult> SetPasswordHashForUser(MongoExternalUser user, string hash) { var update = Builders <MongoExternalUser> .Update .Set(s => s.Hash, hash); return(await collection.UpdateOneAsync(x => x.Username == user.Username, update)); }
public async Task <MongoExternalUser> AutoProvisionUser(string provider, string userId, List <Claim> claims) { var filter = Filters.Where(x => x.UsernameNormalized == userId.ToLowerInvariant().Normalize()); var numberOfUsersWithUsername = await collection.CountAsync(filter); if (numberOfUsersWithUsername > 0) { throw new UserExistsException(); } var nameClaim = ClaimsFinder.ResolveNameClaim(userId, claims); var emailClaim = claims.ResolveEmailClaim(); var user = new MongoExternalUser { ProviderId = userId, Username = nameClaim?.Value, Email = emailClaim.Value, ProviderKey = provider, Claims = claims.Select(x => new MongoClaim(x)).ToList() }; user.SetMongoInternals(); await collection.InsertOneAsync(user); return(user); }