]> WPIA git - gigi.git/blob - src/org/cacert/gigi/pages/account/certs/CertificateAdd.java
eeb3eafb1ab552449d27c0d06115b5d39ab37349
[gigi.git] / src / org / cacert / gigi / pages / account / certs / CertificateAdd.java
1 package org.cacert.gigi.pages.account.certs;
2
3 import java.io.IOException;
4 import java.util.Collections;
5 import java.util.HashMap;
6
7 import javax.servlet.http.HttpServletRequest;
8 import javax.servlet.http.HttpServletResponse;
9
10 import org.cacert.gigi.dbObjects.Certificate;
11 import org.cacert.gigi.dbObjects.Certificate.CertificateStatus;
12 import org.cacert.gigi.dbObjects.Group;
13 import org.cacert.gigi.output.template.Form;
14 import org.cacert.gigi.pages.Page;
15 import org.cacert.gigi.util.AuthorizationContext;
16
17 public class CertificateAdd extends Page {
18
19     public static final String PATH = "/account/certs/new";
20
21     public CertificateAdd() {
22         super("Create certificate");
23     }
24
25     @Override
26     public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
27         new CertificateIssueForm(req).output(resp.getWriter(), getLanguage(req), new HashMap<String, Object>());
28     }
29
30     @Override
31     public boolean beforePost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
32         CertificateIssueForm f = Form.getForm(req, CertificateIssueForm.class);
33         if (f.submitExceptionProtected(req)) {
34             Certificate c = f.getResult();
35             if (c.getStatus() != CertificateStatus.ISSUED) {
36                 resp.getWriter().println("Timeout while waiting for certificate.");
37                 return false;
38             }
39             String ser = c.getSerial();
40             if (ser.isEmpty()) {
41                 resp.getWriter().println("Timeout while waiting for certificate.");
42                 return false;
43             }
44             resp.sendRedirect(Certificates.PATH + "/" + ser);
45             return true;
46         }
47         return super.beforePost(req, resp);
48     }
49
50     @Override
51     public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
52         if (Form.printFormErrors(req, resp.getWriter())) {
53             CertificateIssueForm f = Form.getForm(req, CertificateIssueForm.class);
54             f.output(resp.getWriter(), getLanguage(req), Collections.<String, Object>emptyMap());
55         }
56     }
57
58     @Override
59     public boolean isPermitted(AuthorizationContext ac) {
60         return super.isPermitted(ac) && !ac.isInGroup(Group.BLOCKEDCERT);
61     }
62 }