Mercurial Hosting > nabble
view src/nabble/view/web/user/ChangeEmail3.jtp @ 0:7ecd1a4ef557
add content
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Mar 2019 19:15:52 -0600 |
parents | |
children |
line wrap: on
line source
<% package nabble.view.web.user; import fschmidt.db.DbDatabase; import fschmidt.util.servlet.ServletUtils; import nabble.model.ModelException; import nabble.model.Site; import nabble.model.User; import nabble.naml.compiler.Template; import nabble.naml.compiler.TemplatePrintWriter; import nabble.naml.namespaces.BasicNamespace; import nabble.view.lib.Jtp; import nabble.view.lib.Shared; import nabble.view.web.template.NabbleNamespace; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; public final class ChangeEmail3 extends HttpServlet { private static final Logger logger = LoggerFactory.getLogger(ChangeEmail3.class); protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); %> <html> <head> <% Shared.title(request,response,"Change Email Confirmation"); %> </head> <body> <% Shared.minHeaderGlobal(request,response); %> <h1>Change Email Confirmation</h1> <% String email = request.getParameter("email"); long userId = Long.valueOf(request.getParameter("user")); Site site = Jtp.getSite(request); User user = site.getUser(userId); String newEmail = user.getProperty("_new_email"); int hash = Integer.parseInt(request.getParameter("h")); user.setProperty("_new_email", null); // delete key if (newEmail == null || !newEmail.equals(email) || hash != ChangeEmail.emailHash(newEmail)) { %> <p><strong>We were unable to change your email address.</strong></p> <p>Please try <a href="ChangeEmail.jtp?user=<%=user.getId()%>">changing your email</a> again or <a href="/template/NamlServlet.jtp?macro=user_profile">go back to menu</a>.</p> <% } else { DbDatabase db = site.getDb(); db.beginTransaction(); try { User u = user.getGoodCopy(); String oldEmail = u.getEmail(); u.setEmail(email); u.update(); ServletUtils.setCookie(request, response, "email", email, true, null); db.commitTransaction(); callNaml(site, oldEmail, email); %> <p>Your email has been changed.</p> <p><a href="/template/NamlServlet.jtp?macro=user_profile">Go back to your profile</a></p> <% } catch(ModelException e) { logger.info("ex inTrans="+db.isInTransaction(),e); %> Email change failed: <br /><%=e.getMessage()%> <% } catch(RuntimeException e) { logger.error("ex inTrans="+db.isInTransaction(),e); throw e; } finally { db.endTransaction(); } } %> <% Shared.footer(request,response); %> <% Shared.analytics(request,response); %> </body> </html> <% } private static void callNaml(Site site, String oldEmail, String newEmail) { Template template = site.getTemplate( "user email changed", BasicNamespace.class, NabbleNamespace.class ); Map<String,Object> params = new HashMap<String,Object>(); params.put("old_email",oldEmail); params.put("new_email",newEmail); template.run( TemplatePrintWriter.NULL, params, new BasicNamespace(template), new NabbleNamespace(site) ); } } %>