]> WPIA git - gigi.git/blob - src/org/cacert/gigi/pages/account/MailCertificateAdd.java
Implement issuing with the new form.
[gigi.git] / src / org / cacert / gigi / pages / account / MailCertificateAdd.java
1 package org.cacert.gigi.pages.account;
2
3 import java.io.IOException;
4 import java.sql.PreparedStatement;
5 import java.sql.ResultSet;
6 import java.sql.SQLException;
7 import java.util.Collections;
8 import java.util.HashMap;
9 import java.util.Map;
10
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13
14 import org.cacert.gigi.Language;
15 import org.cacert.gigi.User;
16 import org.cacert.gigi.database.DatabaseConnection;
17 import org.cacert.gigi.output.template.IterableDataset;
18 import org.cacert.gigi.pages.LoginPage;
19 import org.cacert.gigi.Certificate;
20 import org.cacert.gigi.output.Form;
21 import org.cacert.gigi.output.template.Template;
22 import org.cacert.gigi.pages.Page;
23
24 public class MailCertificateAdd extends Page {
25         public static final String PATH = "/account/certs/email/new";
26         Template t = new Template(MailCertificateAdd.class.getResource("RequestCertificate.templ"));
27
28         public MailCertificateAdd() {
29                 super("Create Email certificate");
30         }
31
32         @Override
33         public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
34                 HashMap<String, Object> vars = new HashMap<String, Object>();
35                 vars.put("CCA", "<a href='/policy/CAcertCommunityAgreement.html'>CCA</a>");
36
37                 User u = LoginPage.getUser(req);
38                 try {
39                         PreparedStatement ps = DatabaseConnection.getInstance().prepare(
40                                 "SELECT `id`,`email` from `email` WHERE `memid`=? AND `deleted`=0");
41                         ps.setInt(1, u.getId());
42                         final ResultSet rs = ps.executeQuery();
43                         vars.put("emails", new IterableDataset() {
44
45                                 @Override
46                                 public boolean next(Language l, Map<String, Object> vars) {
47                                         try {
48                                                 if (!rs.next()) {
49                                                         return false;
50                                                 }
51                                                 vars.put("id", rs.getString(1));
52                                                 vars.put("value", rs.getString(2));
53                                                 return true;
54                                         } catch (SQLException e) {
55                                                 e.printStackTrace();
56                                         }
57                                         return false;
58                                 }
59                         });
60                         getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars);
61                         rs.close();
62                 } catch (SQLException e) {
63                         e.printStackTrace();
64                 }
65         }
66
67         @Override
68         public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
69                 IssueCertificateForm f;
70                 if (req.getParameter(Form.CSRF_FIELD) != null) {
71                         f = Form.getForm(req, IssueCertificateForm.class);
72                         if (f.submit(resp.getWriter(), req)) {
73                                 Certificate c = f.getResult();
74                                 String ser = c.getSerial();
75                                 resp.sendRedirect(MailCertificates.PATH + "/" + ser);
76                         }
77                 } else {
78                         f = new IssueCertificateForm(req);
79                         f.submit(resp.getWriter(), req);
80                 }
81                 f.output(resp.getWriter(), getLanguage(req), Collections.<String, Object> emptyMap());
82
83         }
84 }