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()); }