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); }