X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Faccount%2Fcerts%2FCertificateAdd.java;h=eeb3eafb1ab552449d27c0d06115b5d39ab37349;hp=4e7da1dd187e69b7e866856d74253ee1846e2235;hb=17a15662212d973d12ed4cea3f5eaa9c0d1169ed;hpb=ec24cf6925bb3729a644580ad4a9375d05883c62 diff --git a/src/org/cacert/gigi/pages/account/certs/CertificateAdd.java b/src/org/cacert/gigi/pages/account/certs/CertificateAdd.java index 4e7da1dd..eeb3eafb 100644 --- a/src/org/cacert/gigi/pages/account/certs/CertificateAdd.java +++ b/src/org/cacert/gigi/pages/account/certs/CertificateAdd.java @@ -8,8 +8,11 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.cacert.gigi.dbObjects.Certificate; +import org.cacert.gigi.dbObjects.Certificate.CertificateStatus; +import org.cacert.gigi.dbObjects.Group; import org.cacert.gigi.output.template.Form; import org.cacert.gigi.pages.Page; +import org.cacert.gigi.util.AuthorizationContext; public class CertificateAdd extends Page { @@ -25,14 +28,35 @@ public class CertificateAdd extends Page { } @Override - public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { + public boolean beforePost(HttpServletRequest req, HttpServletResponse resp) throws IOException { CertificateIssueForm f = Form.getForm(req, CertificateIssueForm.class); - if (f.submit(resp.getWriter(), req)) { + if (f.submitExceptionProtected(req)) { Certificate c = f.getResult(); + if (c.getStatus() != CertificateStatus.ISSUED) { + resp.getWriter().println("Timeout while waiting for certificate."); + return false; + } String ser = c.getSerial(); + if (ser.isEmpty()) { + resp.getWriter().println("Timeout while waiting for certificate."); + return false; + } resp.sendRedirect(Certificates.PATH + "/" + ser); + return true; + } + return super.beforePost(req, resp); + } + + @Override + public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { + if (Form.printFormErrors(req, resp.getWriter())) { + CertificateIssueForm f = Form.getForm(req, CertificateIssueForm.class); + f.output(resp.getWriter(), getLanguage(req), Collections.emptyMap()); } - f.output(resp.getWriter(), getLanguage(req), Collections.emptyMap()); + } + @Override + public boolean isPermitted(AuthorizationContext ac) { + return super.isPermitted(ac) && !ac.isInGroup(Group.BLOCKEDCERT); } }