]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/admin/support/SupportRevokeCertificatesForm.java
upd: use bootstrap class for button
[gigi.git] / src / org / cacert / gigi / pages / admin / support / SupportRevokeCertificatesForm.java
index e51a19ec26d514d710ab14a4dee5563a8b3e206d..ff64c6f5b1d3d10e5b70aa6c4ca1c10097c4bf6b 100644 (file)
@@ -10,30 +10,36 @@ import javax.servlet.http.HttpServletRequest;
 
 import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.dbObjects.Certificate;
+import org.cacert.gigi.dbObjects.Certificate.CertificateStatus;
 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;
 import org.cacert.gigi.output.template.IterableDataset;
+import org.cacert.gigi.output.template.Outputable;
 import org.cacert.gigi.output.template.Template;
+import org.cacert.gigi.output.template.TranslateCommand;
 
 public class SupportRevokeCertificatesForm extends Form {
 
-    private static Template t;
+    private static final Template t = new Template(SupportRevokeCertificatesForm.class.getResource("SupportRevokeCertificatesForm.templ"));
 
-    private User user;
-    static {
-        t = new Template(SupportRevokeCertificatesForm.class.getResource("SupportRevokeCertificatesForm.templ"));
-    }
+    private SupportedUser user;
 
-    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();
+            String subject = "Revoke certificates";
+            Outputable message = new TranslateCommand("All certificates in the account have been revoked.");
+            user.sendSupportNotification(subject, message);
+            return true;
+        }
         return false;
     }
 
@@ -52,6 +58,7 @@ public class SupportRevokeCertificatesForm extends Form {
                 }
                 int valid = 0;
                 int total = 0;
+                int revoked = 0;
                 long lastExpire = Long.MIN_VALUE;
                 for (int i = 0; i < certs.length; i++) {
                     try {
@@ -59,6 +66,13 @@ public class SupportRevokeCertificatesForm extends Form {
                             continue;
                         }
                         total++;
+                        if (certs[i].getStatus() == CertificateStatus.DRAFT) {
+                            continue;
+                        }
+                        if (certs[i].getStatus() == CertificateStatus.REVOKED) {
+                            revoked++;
+                            continue;
+                        }
                         certs[i].cert().checkValidity();
                         lastExpire = Math.max(lastExpire, certs[i].cert().getNotAfter().getTime());
                         valid++;
@@ -70,11 +84,11 @@ public class SupportRevokeCertificatesForm extends Form {
                 vars.put("profile", profiles[typeIndex].getVisibleName());
                 vars.put("valid", valid);
                 vars.put("exp", total - valid);
-                vars.put("rev", "TODO");
+                vars.put("rev", revoked);
                 if (lastExpire == Long.MIN_VALUE) {
                     vars.put("lastdate", "-");
                 } else {
-                    vars.put("lastdate", DateSelector.getDateFormat().format(new Date(lastExpire)));
+                    vars.put("lastdate", new Date(lastExpire));
                 }
                 typeIndex++;
                 return true;