public ActionResult PasswordRecovery(Usuario model) { if (ModelState.IsValid) { var username = CustomIdentity.GetIdUsuario(model.login); if (username != -1) { //recuperamos el usuario var usu = ConsultasBbdd.GetUsuariobyId(username); // enviamos el email con la url magica.. var token = Encodificacion.EncodeMessageWithPassword(usu.login, usu.password); var retorno = Notificaciones.SendPasswordRetrieval(model.login, token); if (!retorno) { ViewBag.error = "ErrorEnviandoNotification"; return(View()); } return(RedirectToAction("EmailEnviado", "Seguridad")); } System.Diagnostics.Trace.WriteLine(String.Format("*** WARNING: A user tried to retrieve their password but the email address used '{0}' does not exist in the database.", model.login)); ViewBag.error = "error"; return(View()); } return(View(model)); }
public ActionResult Validate(string email, string token) { var username = CustomIdentity.GetIdUsuario(email); if (username != -1) { //recuperamos el usuario var usu = ConsultasBbdd.GetUsuariobyId(username); //decodificamos var emaildeco = Encodificacion.DecodeMessageWithPassword(token, usu.password); //comprobamos que coincide la deco con la de la base de datos if (emaildeco == usu.login) { //redirigimos a la vista de recuperar password var pass = new CambioPasswordVista { UsuarioActual = usu.login }; return(View(pass)); } //las passwords no coinciden return(RedirectToAction("ErrorRecovery", "Seguridad")); } //esta mal el email return(RedirectToAction("ErrorRecovery", "Seguridad")); }