Esempio n. 1
0
        public async Task <IActionResult> ChangePassword(ChangePasswordViewModel changePasswordViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(changePasswordViewModel));
            }

            if (changePasswordViewModel.NewPassword != changePasswordViewModel.ConfirmNewPassword)
            {
                ModelState.AddModelError(string.Empty, "Le nouveau mot de passe ne correspond pas à la confirmation");
                return(View(changePasswordViewModel));
            }

            // Récupération de l'utilisateur
            Person User = await _userManager.GetUserAsync(HttpContext.User);

            var result = await _userManager.ChangePasswordAsync(User, changePasswordViewModel.Password, changePasswordViewModel.NewPassword);

            if (!result.Succeeded)
            {
                // Retour des erreurs
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
                return(View(changePasswordViewModel));
            }

            // Déconnexion
            await _signInManager.SignOutAsync();

            return(Redirect("/"));
        }