コード例 #1
0
        public ActionResult ValidateUsername(ViewModel.AccountRecoveryInfoViewModel accountInfo)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    ModelState.AddModelError("Username", "Username is required");
                    _logger.Info("User submitted password reset form. But username does not exist in form value. Showing validation message.");
                    return(View("~/Views/AccountRecovery/ResetPassword.cshtml", accountInfo));
                }

                //Check user account disabled or not
                GenericAjaxResponse <AHP.Core.DTO.ExternalUserInfo> userResponse = _restClient.GetUserDetails(accountInfo.Username);
                if (!userResponse.Success || userResponse.Data == null)
                {
                    ModelState.AddModelError("Username", "Account information does not exist");
                    return(View("~/Views/AccountRecovery/ResetPassword.cshtml", accountInfo));
                }

                if (!userResponse.Data.IsActive)
                {
                    ModelState.AddModelError("Username", "Your account has been disabled. Please contact your account manager.");
                    return(View("~/Views/AccountRecovery/ResetPassword.cshtml", accountInfo));
                }

                //Get security questions for the user.
                GenericAjaxResponse <List <AHP.Core.DTO.UserSecurityOption> > apiResponse = _restClient.GetSecurityQuestionsForUser(accountInfo.Username);

                //only two questions need to be present and user should also be present
                if (apiResponse.Success && apiResponse.Data != null && apiResponse.Data.Count == 3)
                {
                    ViewModel.UserQuestionsViewmodel usrQuestionInfo = new ViewModel.UserQuestionsViewmodel()
                    {
                        SecurityQuestions = new List <string>()
                    };

                    //Pre fill primary and secondary questions that the user had selected
                    usrQuestionInfo.PrimarySelectedQuestion   = apiResponse.Data[0].Question;
                    usrQuestionInfo.SecondarySelectedQuestion = apiResponse.Data[1].Question;
                    usrQuestionInfo.ThirdSelectedQuestion     = apiResponse.Data[2].Question;
                    ViewBag.Username = accountInfo.Username;

                    _logger.Info("User details exists. Redirecting to answer security question page.");
                    return(View("~/Views/AccountRecovery/AnswerSecurityQuestions.cshtml", usrQuestionInfo));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Account information does not exist or you haven't setup your security questions in the system yet.");
                    return(View("~/Views/AccountRecovery/ResetPassword.cshtml", accountInfo));
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, "We are sorry. Could not process your request at this time.");
                _logger.Error("Error occurred validating username", ex);
                return(View("~/Views/AccountRecovery/ResetPassword.cshtml", accountInfo));
            }
        }
コード例 #2
0
 public ActionResult ResetPassword()
 {
     _logger.Info("User landed on password reset screen.");
     AHP.Web.ViewModel.AccountRecoveryInfoViewModel pwdResetViewmodel = new ViewModel.AccountRecoveryInfoViewModel();
     return(View(pwdResetViewmodel));
 }