]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/account/MailCertificateAdd.java
Implement a Template-Foreach (and use in "new email certificate")
[gigi.git] / src / org / cacert / gigi / pages / account / MailCertificateAdd.java
index f01b8f0c79dad505fa6b88b8160cba6737ebbfe4..769f9e1ad0d8aaf60de7f1d2ef7fedd744ff7403 100644 (file)
@@ -2,14 +2,21 @@ package org.cacert.gigi.pages.account;
 
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.HashMap;
+import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.cacert.gigi.Certificate;
+import org.cacert.gigi.User;
+import org.cacert.gigi.database.DatabaseConnection;
 import org.cacert.gigi.output.ClientCSRGenerate;
+import org.cacert.gigi.output.template.IterableDataset;
+import org.cacert.gigi.pages.LoginPage;
 import org.cacert.gigi.pages.Page;
 
 public class MailCertificateAdd extends Page {
@@ -23,7 +30,35 @@ public class MailCertificateAdd extends Page {
        public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
                HashMap<String, Object> vars = new HashMap<String, Object>();
                vars.put("CCA", "<a href='/policy/CAcertCommunityAgreement.html'>CCA</a>");
-               getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars);
+
+               User u = LoginPage.getUser(req);
+               try {
+                       PreparedStatement ps = DatabaseConnection.getInstance().prepare(
+                               "SELECT `id`,`email` from `email` WHERE `memid`=? AND `deleted`=0");
+                       ps.setInt(1, u.getId());
+                       final ResultSet rs = ps.executeQuery();
+                       vars.put("emails", new IterableDataset() {
+
+                               @Override
+                               public boolean next(Map<String, Object> vars) {
+                                       try {
+                                               if (!rs.next()) {
+                                                       return false;
+                                               }
+                                               vars.put("id", rs.getString(1));
+                                               vars.put("value", rs.getString(2));
+                                               return true;
+                                       } catch (SQLException e) {
+                                               e.printStackTrace();
+                                       }
+                                       return false;
+                               }
+                       });
+                       getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars);
+                       rs.close();
+               } catch (SQLException e) {
+                       e.printStackTrace();
+               }
        }
 
        @Override
@@ -38,11 +73,11 @@ public class MailCertificateAdd extends Page {
                        // Error.
                        return;
                }
-               Certificate c = new Certificate("/commonName=CAcert WoT User", "sha256", csr);
+               Certificate c = new Certificate(LoginPage.getUser(req).getId(), "/commonName=CAcert WoT User", "sha256", csr);
                c.issue();
                try {
                        c.waitFor(60000);
-                       resp.sendRedirect(MailCertificates.PATH + "/" + c.getId());
+                       resp.sendRedirect(MailCertificates.PATH + "/" + c.getSerial());
                } catch (SQLException e) {
                        e.printStackTrace();
                } catch (InterruptedException e) {