Exemplo n.º 1
0
        public async Task <ActionResult> ResetPassword(ResetPasswordViewModel model)
        {
            var manager = ForgotPasswordViewModel.GetUserManager();

            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var user = await manager.FindByNameAsync(model.Email);

            if (user == null)
            {
                // Don't reveal that the user does not exist
                return(RedirectToAction("ResetPasswordConfirmation", "Account"));
            }

            try
            {
                if (model.TokenPassword.Equals(user.TokenPassword))
                {
                    var removePassword = manager.RemovePassword(user.Id);
                    if (removePassword.Succeeded)
                    {
                        var addPassword = manager.AddPassword(user.Id, model.ConfirmPassword);
                        if (addPassword.Succeeded)
                        {
                            user.TokenPassword = "";
                            manager.Update(user);
                            return(RedirectToAction("ResetPasswordConfirmation", "Account"));
                        }
                        else
                        {
                            AddErrors(addPassword);
                        }
                    }
                    else
                    {
                        AddErrors(removePassword);
                    }
                }
            }

            catch (Exception e)
            {
                ModelState.AddModelError("The token is invalid", e);
            }

            return(View());
        }