예제 #1
0
        /// <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);
        }