X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2FVerify.java;h=0f88fe4048cd467b208fe477b8d92bce4bae2cfe;hb=449f75a2b5d97ebf34bec2df715b71aa7e31afb0;hp=f64c21458ef991241c0af2fa06682d0c4f99da6c;hpb=446d3aa82c177eb844f6f19c8f85d4a6e631efe7;p=gigi.git diff --git a/src/org/cacert/gigi/pages/Verify.java b/src/org/cacert/gigi/pages/Verify.java index f64c2145..0f88fe40 100644 --- a/src/org/cacert/gigi/pages/Verify.java +++ b/src/org/cacert/gigi/pages/Verify.java @@ -2,16 +2,92 @@ package org.cacert.gigi.pages; import java.io.IOException; import java.io.PrintWriter; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.cacert.gigi.Domain; -import org.cacert.gigi.EmailAddress; import org.cacert.gigi.GigiApiException; +import org.cacert.gigi.dbObjects.Domain; +import org.cacert.gigi.dbObjects.EmailAddress; +import org.cacert.gigi.dbObjects.Verifyable; +import org.cacert.gigi.localisation.Language; +import org.cacert.gigi.output.template.Form; +import org.cacert.gigi.output.template.SprintfCommand; public class Verify extends Page { + private static final SprintfCommand emailAddressVerified = new SprintfCommand("Email address {0} verified", Arrays.asList("${subject}")); + + private static final SprintfCommand domainVerified = new SprintfCommand("Domain {0} verified", Arrays.asList("${subject}")); + + private class VerificationForm extends Form { + + private String hash; + + private String type; + + private String id; + + private Verifyable target; + + String subject; + + public VerificationForm(HttpServletRequest hsr) { + super(hsr, PATH); + hash = hsr.getParameter("hash"); + type = hsr.getParameter("type"); + id = hsr.getParameter("id"); + if ("email".equals(type)) { + EmailAddress addr = EmailAddress.getById(Integer.parseInt(id)); + subject = addr.getAddress(); + target = addr; + } else if ("domain".equals(type)) { + Domain domain = Domain.getById(Integer.parseInt(id)); + subject = domain.getSuffix(); + target = domain; + } + } + + @Override + public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException { + HashMap data = new HashMap<>(); + data.put("subject", subject); + if ("email".equals(type)) { + try { + target.verify(hash); + emailAddressVerified.output(out, getLanguage(req), data); + } catch (IllegalArgumentException e) { + out.println(translate(req, "The email address is invalid.")); + } catch (GigiApiException e) { + e.format(out, getLanguage(req)); + } + } else if ("domain".equals(type)) { + try { + target.verify(hash); + domainVerified.output(out, getLanguage(req), data); + } catch (IllegalArgumentException e) { + out.println(translate(req, "The domain is invalid.")); + } catch (GigiApiException e) { + e.format(out, getLanguage(req)); + } + } + return true; + } + + @Override + protected void outputContent(PrintWriter out, Language l, Map vars) { + vars.put("hash", hash); + vars.put("id", id); + vars.put("type", type); + + vars.put("subject", subject); + getDefaultTemplate().output(out, l, vars); + } + } + public static final String PATH = "/verify"; public Verify() { @@ -24,31 +100,22 @@ public class Verify extends Page { } @Override - public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { - PrintWriter out = resp.getWriter(); - String hash = req.getParameter("hash"); - String type = req.getParameter("type"); - String id = req.getParameter("id"); - if ("email".equals(type)) { - try { - EmailAddress ea = EmailAddress.getById(Integer.parseInt(id)); - ea.verify(hash); - out.println("Email verification completed."); - } catch (IllegalArgumentException e) { - out.println(translate(req, "The email address is invalid.")); - } catch (GigiApiException e) { - e.format(out, getLanguage(req)); - } - } else if ("domain".equals(type)) { - try { - Domain ea = Domain.getById(Integer.parseInt(id)); - ea.verify(hash); - out.println("Domain verification completed."); - } catch (IllegalArgumentException e) { - out.println(translate(req, "The domain address is invalid.")); - } catch (GigiApiException e) { - e.format(out, getLanguage(req)); + public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { + try { + if (Form.getForm(req, VerificationForm.class).submit(resp.getWriter(), req)) { } + } catch (GigiApiException e) { + e.format(resp.getWriter(), getLanguage(req)); + } + } + + @Override + public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { + try { + new VerificationForm(req).output(resp.getWriter(), getLanguage(req), new HashMap()); + } catch (IllegalArgumentException e) { + resp.getWriter().println(translate(req, "The object to verify is invalid.")); + } }