App.Data.DatabaseContextExtensions.GetByUserNameOrEmail C# (CSharp) Method

GetByUserNameOrEmail() public static method

public static GetByUserNameOrEmail ( this users, string userNameOrEmail, string password ) : User
users this
userNameOrEmail string
password string
return User
        public static User GetByUserNameOrEmail(this DbSet<User> users, string userNameOrEmail, string password)
        {
            if (userNameOrEmail.Contains('@'))
            {
                foreach (var user in users.Where(u => u.Email == userNameOrEmail))
                {
                    if (PasswordHash.Validate(password, user.PasswordHash, user.PasswordSalt))
                    {
                        return user;
                    }
                }
            }
            else
            {
                var user = users.SingleOrDefault(u => u.UserName == userNameOrEmail);

                if (user != null && PasswordHash.Validate(password, user.PasswordHash, user.PasswordSalt))
                {
                    return user;
                }
            }

            return null;
        }