示例#1
0
        public async Task <IActionResult> NewPassword(UserNewPasswordDTO userNewPasswordDto)
        {
            if (ModelState.IsValid && userNewPasswordDto.Id != Guid.Empty && userNewPasswordDto.NewPassword.Equals(userNewPasswordDto.NewPasswordConfirm))
            {
                var user = await _userManager.FindByIdAsync(userNewPasswordDto.Id.ToString());

                if (user != null)
                {
                    var _passwordValidator = HttpContext
                                             .RequestServices.GetService(typeof(IPasswordValidator <User>)) as IPasswordValidator <User>;

                    var _passwordHasher =
                        HttpContext.RequestServices.GetService(typeof(IPasswordHasher <User>)) as IPasswordHasher <User>;

                    IdentityResult result =
                        await _passwordValidator.ValidateAsync(_userManager, user, userNewPasswordDto.NewPassword);

                    if (result.Succeeded)
                    {
                        user.PasswordHash = _passwordHasher.HashPassword(user, userNewPasswordDto.NewPassword);

                        await _userManager.UpdateAsync(user);

                        await _emailService.SendAsync(ChangePasswordSettings.subject,
                                                      ChangePasswordSettings.GetMessage(userNewPasswordDto.Email,
                                                                                        userNewPasswordDto.NewPassword), userNewPasswordDto.Email);

                        return(RedirectToAction("Authenticate", "Account"));
                    }
                    else
                    {
                        foreach (var error in result.Errors)
                        {
                            ModelState.AddModelError(string.Empty, error.Description);
                        }
                    }
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Користувач незнайдений");
                }
            }
            else
            {
                return(Content("Model state isn't valid"));
            }
            return(View(userNewPasswordDto));
        }
示例#2
0
        public async Task <IActionResult> ChangePassword(UserChangePasswordDTO userChangePasswordDto)
        {
            if (ModelState.IsValid)
            {
                var nameOfCurrentUser = HttpContext.User.Identity.Name;

                var user = await _userManager.FindByNameAsync(nameOfCurrentUser);

                if (user != null)
                {
                    IdentityResult result =
                        await _userManager.ChangePasswordAsync(user, userChangePasswordDto.OldPassword, userChangePasswordDto.NewPassword);

                    if (result.Succeeded)
                    {
                        await _emailService.SendAsync(ChangePasswordSettings.subject,
                                                      ChangePasswordSettings.GetMessage(user.Email, userChangePasswordDto.NewPassword),
                                                      user.Email);

                        return(RedirectToAction("Index", "Home"));
                    }
                    else
                    {
                        foreach (var error in result.Errors)
                        {
                            ModelState.AddModelError(string.Empty, error.Description);
                        }
                    }
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Користувач незнайдений");
                }
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Неправильно введені дані");
            }
            return(PartialView(userChangePasswordDto));
        }