From 123453c89af0440afb52064a0980024c135185fd Mon Sep 17 00:00:00 2001 From: Janis Streib Date: Mon, 2 Feb 2015 19:24:13 +0100 Subject: [PATCH] ADD: SE certificate revoke --- .../cacert/gigi/dbObjects/SupportedUser.java | 13 ++++++++++++ .../SupportRevokeCertificatesForm.java | 10 ++++++--- .../SupportRevokeCertificatesForm.templ | 2 +- .../admin/support/SupportUserDetailsPage.java | 21 ++++++++++++------- 4 files changed, 35 insertions(+), 11 deletions(-) diff --git a/src/org/cacert/gigi/dbObjects/SupportedUser.java b/src/org/cacert/gigi/dbObjects/SupportedUser.java index 4ee12100..fe5243dc 100644 --- a/src/org/cacert/gigi/dbObjects/SupportedUser.java +++ b/src/org/cacert/gigi/dbObjects/SupportedUser.java @@ -14,6 +14,7 @@ public class SupportedUser { public SupportedUser(User target, User supporter, String ticket) { this.supporter = supporter; this.target = target; + this.ticket = ticket; } public void setName(String fname, String mname, String lname, String suffix) { @@ -43,4 +44,16 @@ public class SupportedUser { prep.executeUpdate(); } + public int getId() { + return target.getId(); + } + + public Certificate[] getCertificates(boolean includeRevoked) { + return target.getCertificates(includeRevoked); + } + + public String getTicket() { + return ticket; + } + } diff --git a/src/org/cacert/gigi/pages/admin/support/SupportRevokeCertificatesForm.java b/src/org/cacert/gigi/pages/admin/support/SupportRevokeCertificatesForm.java index e51a19ec..af02cb53 100644 --- a/src/org/cacert/gigi/pages/admin/support/SupportRevokeCertificatesForm.java +++ b/src/org/cacert/gigi/pages/admin/support/SupportRevokeCertificatesForm.java @@ -11,7 +11,7 @@ import javax.servlet.http.HttpServletRequest; import org.cacert.gigi.GigiApiException; import org.cacert.gigi.dbObjects.Certificate; import org.cacert.gigi.dbObjects.CertificateProfile; -import org.cacert.gigi.dbObjects.User; +import org.cacert.gigi.dbObjects.SupportedUser; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.DateSelector; import org.cacert.gigi.output.template.Form; @@ -22,18 +22,22 @@ public class SupportRevokeCertificatesForm extends Form { private static Template t; - private User user; + private SupportedUser user; static { t = new Template(SupportRevokeCertificatesForm.class.getResource("SupportRevokeCertificatesForm.templ")); } - public SupportRevokeCertificatesForm(HttpServletRequest hsr, User user) { + public SupportRevokeCertificatesForm(HttpServletRequest hsr, SupportedUser user) { super(hsr); this.user = user; } @Override public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException { + if (user.getTicket() != null) { + user.revokeAllCertificates(); + return true; + } return false; } diff --git a/src/org/cacert/gigi/pages/admin/support/SupportRevokeCertificatesForm.templ b/src/org/cacert/gigi/pages/admin/support/SupportRevokeCertificatesForm.templ index f4a0060e..5fabb3cf 100644 --- a/src/org/cacert/gigi/pages/admin/support/SupportRevokeCertificatesForm.templ +++ b/src/org/cacert/gigi/pages/admin/support/SupportRevokeCertificatesForm.templ @@ -22,7 +22,7 @@ - + \ No newline at end of file diff --git a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsPage.java b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsPage.java index 70146d5f..f1eed526 100644 --- a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsPage.java +++ b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsPage.java @@ -10,6 +10,7 @@ import javax.servlet.http.HttpServletResponse; import org.cacert.gigi.GigiApiException; import org.cacert.gigi.dbObjects.EmailAddress; import org.cacert.gigi.dbObjects.Group; +import org.cacert.gigi.dbObjects.SupportedUser; import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.template.Form; @@ -33,7 +34,8 @@ public class SupportUserDetailsPage extends Page { SupportUserDetailsForm f = new SupportUserDetailsForm(req, user); HashMap vars = new HashMap(); vars.put("details", f); - vars.put("ticketNo", req.getSession().getAttribute("ticketNo" + user.getId())); + String ticket = (String) req.getSession().getAttribute("ticketNo" + user.getId()); + vars.put("ticketNo", ticket); final EmailAddress[] addrs = user.getEmails(); vars.put("emails", new IterableDataset() { @@ -52,22 +54,27 @@ public class SupportUserDetailsPage extends Page { return true; } }); - vars.put("certifrevoke", new SupportRevokeCertificatesForm(req, user)); + vars.put("certifrevoke", new SupportRevokeCertificatesForm(req, new SupportedUser(user, getUser(req), ticket))); vars.put("tickethandling", new SupportEnterTicketForm(req, user)); getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars); } @Override public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { - if (req.getParameter("setTicket") != null) { - try { + try { + if (req.getParameter("setTicket") != null) { + if ( !Form.getForm(req, SupportEnterTicketForm.class).submit(resp.getWriter(), req)) { throw new GigiApiException("Invalid ticket number!"); } - } catch (GigiApiException e) { - e.printStackTrace(); - e.format(resp.getWriter(), getLanguage(req)); + } else if (req.getParameter("revokeall") != null) { + if ( !Form.getForm(req, SupportRevokeCertificatesForm.class).submit(resp.getWriter(), req)) { + throw new GigiApiException("No ticket number set."); + } } + } catch (GigiApiException e) { + e.printStackTrace(); + e.format(resp.getWriter(), getLanguage(req)); } super.doPost(req, resp); } -- 2.39.2