public ActionResult ResetPassword(String username) { ISession session = NHibernateManager.OpenSession(); ITransaction tran = session.BeginTransaction(); try { User user = Glimpse.Models.User.FindByUsername(username, session); if (user == null) { throw new GlimpseException("Usuario inexistente: " + username + "."); } String newPassword = StringHelper.GenerateRandomString(); String newPasswordEnc = CryptoHelper.EncryptDefaultKey(newPassword); user.ChangePassword(user.Entity.Password, newPasswordEnc, session); MailAccount.SendResetPasswordMail(user, newPassword, session); tran.Commit(); JsonResult result = Json(new { success = true, message = "La contraseña ha sido reinicializada." }, JsonRequestBehavior.AllowGet); return(result); } catch (GlimpseException exc) { tran.Rollback(); return(Json(new { success = false, message = exc.GlimpseMessage }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { tran.Rollback(); Log.LogException(exc); return(Json(new { success = false, message = "Error al reiniciar la contraseña." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }