public async Task <ActionResponse> AuthenticatePasswordAsync(AuthenticatePasswordInputModel model) { var user = await _userStore.GetUserByEmailAsync(model.Username); //todo: handle non-email addresses if (user == null) { return(Unauthenticated("The email address or password wasn't right")); } else { var checkPasswordResult = await _passwordService.CheckPasswordAsync(user.SubjectId, model.Password); switch (checkPasswordResult) { case CheckPasswordResult.NotFound: case CheckPasswordResult.PasswordIncorrect: return(Unauthenticated("The email address or password wasn't right")); case CheckPasswordResult.TemporarilyLocked: return(Unauthenticated("Your password is temporarily locked. Use a one time code to sign in.")); case CheckPasswordResult.Success: return(Redirect(ValidatedNextUrl(model.NextUrl))); case CheckPasswordResult.ServiceFailure: default: return(ServerError("Hmm. Something went wrong. Please try again.")); } } }
public async Task <ActionResponse> AuthenticateAsync(AuthenticatePasswordInputModel model) { var oneTimeCode = model.Password.Replace(" ", ""); if (oneTimeCode.Length == 6 && oneTimeCode.All(Char.IsDigit)) { var input = new AuthenticateInputModel() { Username = model.Username, OneTimeCode = oneTimeCode, StaySignedIn = model.StaySignedIn }; return(await AuthenticateCodeAsyc(input)); } else { return(await AuthenticatePasswordAsync(model)); } }