Exemplo n.º 1
0
 public static async Task <User> FindByEmailAsync(this IUsersRepository users,
                                                  string email, CancellationToken cancellationToken = default)
 {
     email = email.Any(x => !char.IsUpper(x)) ? email.ToUpperInvariant() : email;
     cancellationToken.ThrowIfCancellationRequested();
     return(await users.ProcessFirstOrDefaultAsync(
                users.AsQueryable()
                .Where(x => x.NormalizedEmail == email),
                cancellationToken));
 }
 public static async Task <IReadOnlyCollection <User> > GetUsersForClaimAsync(
     this IUsersClaimsRepository usersClaims,
     Claim claim, IUsersRepository users, CancellationToken cancellationToken = default)
 {
     cancellationToken.ThrowIfCancellationRequested();
     return(await users.ProcessQueryAsync(
                usersClaims.AsQueryable()
                .Where(userClaim => userClaim.ClaimValue == claim.Value && userClaim.ClaimType == claim.Type)
                .Join(users.AsQueryable(), userClaim => userClaim.UserId, user => user.Id,
                      (userClaim, user) => user),
                cancellationToken));
 }
        public static async Task <IReadOnlyCollection <User> > GetUsersInRoleAsync(this IUsersRolesRepository usersRoles,
                                                                                   string roleName, IRolesRepository roles, IUsersRepository users,
                                                                                   CancellationToken cancellationToken = default)
        {
            cancellationToken.ThrowIfCancellationRequested();
            var role = await roles.FindByNameAsync(roleName, false, cancellationToken);

            var userIdCollection = (await
                                    usersRoles.ProcessQueryAsync(usersRoles.AsQueryable().Where(x => x.RoleId == role.Id),
                                                                 cancellationToken)).Select(x => x.UserId);

            return(await users.ProcessQueryAsync(users.AsQueryable().Where(
                                                     user => userIdCollection.Contains(user.Id)), cancellationToken));
        }