/// <summary> /// Does the main work for resetting a user's password. Validates their token, then sends the details to the backend for update. /// </summary> /// <param name="inputModel">The reset password input model</param> /// <returns>viewModel for handling</returns> private ResetPasswordViewModel resetUserPassword(ResetPasswordInputModel inputModel) { //Initialise everything we need. ResetPasswordViewModel viewModel = new ResetPasswordViewModel(true); ErrorObj talentErrObj = new ErrorObj(); DECustomer deCust = new DECustomer(); Mapper.CreateMap <ResetPasswordInputModel, DECustomer>(); DECustomerV11 deCustV11 = new DECustomerV11(); PasswordHash pH = new PasswordHash(); //Make sure token is still valid inputModel = validateToken(inputModel); if (inputModel.IsValid) { //Hash the user's new password. inputModel.NewHashedPassword = pH.HashSalt(inputModel.NewPassword, Environment.Settings.DefaultValues.SaltString); //Map the inputModel parameters to a DECustomer object. deCust = Mapper.Map <DECustomer>(inputModel); deCust.Source = GlobalConstants.SOURCE; deCustV11.DECustomersV1.Add(deCust); _talCust.DeV11 = deCustV11; _talCust.Settings = Environment.Settings.DESettings; //Backend call, and error checking talentErrObj = _talCust.ResetPassword(); viewModel.Error = Data.PopulateErrorObject(talentErrObj, _talCust.ResultDataSet, _talCust.Settings, null); if (!viewModel.Error.HasError) { viewModel.Mode = GlobalConstants.PASSWORD_ENC_MODE_RESPONSE; expireUsedToken(inputModel); } else { viewModel.Mode = GlobalConstants.PASSWORD_ENC_MODE_INITIAL; if (viewModel.Error == null) { viewModel.Error = new ErrorModel(); viewModel.Error.HasError = true; viewModel.Error.ErrorMessage = viewModel.GetPageText("UnspecifiedError"); } } } else { viewModel.Mode = GlobalConstants.PASSWORD_ENC_MODE_INITIAL; if (viewModel.Error == null) { viewModel.Error = new ErrorModel(); viewModel.Error.HasError = true; viewModel.Error.ErrorMessage = viewModel.GetPageText("GenericError"); } } return(viewModel); }