public async Task <ActionResult> ResetPassword(ResetPasswordViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var user = await UserManager.FindByNameAsync(model.Email); if (user == null) { // No revelar que el usuario no existe return(RedirectToAction("ResetPasswordConfirmation", "Account")); } var VerificacionCodigo = RecuperacionContrasenaControlador.ConsultaRecuperacionContrasena(user.Id, model.Code); if (VerificacionCodigo != null) { var result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password); if (result.Succeeded) { RecuperacionContrasenaControlador.EliminarRecuperacion(user.Id); GestorCorreo.EmailCambioContrasena(model.Email); return(RedirectToAction("ResetPasswordConfirmation", "Account")); } AddErrors(result); } return(View()); }
public async Task <ActionResult> ForgotPassword(ForgotPasswordViewModel model) { if (ModelState.IsValid) { var user = await UserManager.FindByNameAsync(model.Email); if (user != null) { //Para obtener más información sobre cómo habilitar la confirmación de cuentas y el restablecimiento de contraseña, visite https://go.microsoft.com/fwlink/?LinkID=320771 //Enviar correo electrónico con este vínculo string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id); RecuperacionContrasenaViewModel Recuperacion = new RecuperacionContrasenaViewModel(); Recuperacion.IdUser = user.Id; Recuperacion.Token = code; RecuperacionContrasenaControlador.NuevaRecuperacionContrasena(Recuperacion); var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); GestorCorreo.EmailRecuperacionContrasena(model.Email, callbackUrl); //await UserManager.SendEmailAsync(user.Id, "Restablecer contraseña", "Para restablecer la contraseña, haga clic <a href=\"" + callbackUrl + "\">aquí</a>"); // No revelar que el usuario no existe o que no está confirmado //return View("ForgotPasswordConfirmation"); } return(RedirectToAction("ForgotPasswordConfirmation", "Account")); } // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario return(View(model)); }