Ejemplo n.º 1
0
        public IUserAuth GetUserAuthByUserName(string userNameOrEmail)
        {
            if (!hasInitSchema)
            {
                InitSchema();
            }

            if (userNameOrEmail == null)
            {
                return(null);
            }

            bool   isEmail       = userNameOrEmail.Contains("@");
            string lowerUserName = userNameOrEmail.ToLower();

            if (HostContext.GetPlugin <AuthFeature>()?.SaveUserNamesInLowerCase == true)
            {
                return(isEmail
                    ? UserAuthRepository.Where(u => u.Email == lowerUserName).FirstOrDefault()
                    : UserAuthRepository.Where(u => u.UserName == lowerUserName).FirstOrDefault());
            }

            // Try an exact search using index first
            JarsUserAuth userAuth = isEmail
                 ? UserAuthRepository.Where(u => u.Email == userNameOrEmail).FirstOrDefault()
                 : UserAuthRepository.Where(u => u.UserName == userNameOrEmail).FirstOrDefault();

            if (userAuth != null)
            {
                return(userAuth);
            }

            // Fallback to a non-index search if no exact match is found
            if (ForceCaseInsensitiveUserNameSearch)
            {
                userAuth = isEmail
                    ? UserAuthRepository.Where(u => u.Email == lowerUserName).FirstOrDefault()
                    : UserAuthRepository.Where(u => u.UserName == lowerUserName).FirstOrDefault();
            }

            return(userAuth);
        }