Example #1
0
        public async Task ResetPassword(UserPasswordResetModel userPasswordResetModel)
        {
            var user = await _verificationService.ValidateVerificationKey(userPasswordResetModel.Key, UserVerificationType.PasswordReset);

            if (user.Email != userPasswordResetModel.Username && user.Username != userPasswordResetModel.Username)
            {
                throw new StatusCodeException(HttpStatusCode.BadRequest);
            }

            var passwordHashResult = _hashService.GetHash(userPasswordResetModel.Password);

            user.Password     = passwordHashResult.Hash;
            user.PasswordSalt = passwordHashResult.Salt;

            await _entityRepository.UpdateEntity(user, null);
        }
Example #2
0
        public IActionResult ResetPasswordForUser(UserPasswordResetModel user)
        {
            if (user.Password != user.PasswordRepeat)
            {
                TempData["ErrorMessage"] = "Passwords do not match";
                return(RedirectToAction("ResetPasswordForUser"));
            }

            if (!String.IsNullOrEmpty(user.TokenHash))
            {
                string   dateTimeFormat   = "yyyyMMddHHmmss";
                DateTime currentDateTime  = Convert.ToDateTime(DateTime.Now.ToString(dateTimeFormat));
                var      tokenInDbForUser = _mapper.Map <PasswordResetModel>(_passwordReset.Get().Where(r =>
                                                                                                        r.Email == user.Email &&
                                                                                                        r.TokenHash == user.TokenHash &&
                                                                                                        DateTime.ParseExact(r.ExpirationDate, dateTimeFormat, null) >= currentDateTime &&
                                                                                                        r.TokenUsed == 0));

                if (tokenInDbForUser == null)
                {
                    TempData["ErrorMessage"] = "Link for reset expired";
                    return(RedirectToAction("ResetPasswordForUser"));
                }

                UserViewModel userVm = _mapper.Map <UserViewModel>(_userRepository.Get().Where(u => u.Email == user.Email));

                if (userVm != null)
                {
                    userVm.Password = user.PasswordRepeat;

                    _userRepository.Update(_mapper.Map <User>(userVm));
                    _userRepository.Save();

                    //Update Token tab
                    tokenInDbForUser.TokenUsed = 1;

                    _passwordReset.Update(_mapper.Map <PasswordReset>(tokenInDbForUser));
                    _passwordReset.Save();

                    TempData["SuccessMessage"] = "Password successfully changed.";
                    return(RedirectToAction("SignIn"));
                }
            }

            return(RedirectToAction("ResetPassword"));
        }
Example #3
0
 public async Task ResetPassword(UserPasswordResetModel userPasswordResetModel)
 {
     await _accountManagementService.ResetPassword(userPasswordResetModel);
 }