]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/output/CertificateIterable.java
add: Highlight certificates outside validity period in Cert Overview
[gigi.git] / src / org / cacert / gigi / output / CertificateIterable.java
index f24d7782ce060e54896feb566269d5bad318a48e..afc883ff4a13544a04df6bcb6fd91d70c4965a23 100644 (file)
@@ -3,17 +3,21 @@ package org.cacert.gigi.output;
 import java.io.IOException;
 import java.security.GeneralSecurityException;
 import java.security.cert.X509Certificate;
+import java.util.Date;
 import java.util.Map;
 
 import org.cacert.gigi.dbObjects.Certificate;
 import org.cacert.gigi.dbObjects.Certificate.CertificateStatus;
 import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.output.template.IterableDataset;
+import org.cacert.gigi.util.CalendarUtil;
 
 public class CertificateIterable implements IterableDataset {
 
     private Certificate[] certificates;
 
+    public static final int EXPIRING_IN_DAYS = 14;
+
     public CertificateIterable(Certificate[] certificates) {
         this.certificates = certificates;
     }
@@ -34,24 +38,45 @@ public class CertificateIterable implements IterableDataset {
         try {
             CertificateStatus st = c.getStatus();
             vars.put("revokable", st != CertificateStatus.REVOKED && st == CertificateStatus.ISSUED);
+            String issuedWarning = "";
+            String expiredWarning = "";
             if (st == CertificateStatus.ISSUED || st == CertificateStatus.REVOKED) {
                 X509Certificate cert = c.cert();
                 vars.put("issued", cert.getNotBefore());
                 vars.put("expire", cert.getNotAfter());
+
+                if (cert.getNotBefore().after(new Date())) {
+                    issuedWarning = "bg-warning";
+                }
+                vars.put("classIssued", issuedWarning);
+
+                if (cert.getNotAfter().before(CalendarUtil.timeDifferenceDays(EXPIRING_IN_DAYS))) {
+                    expiredWarning = "bg-warning";
+                }
+                if (cert.getNotAfter().before(new Date())) {
+                    expiredWarning = "bg-danger";
+                }
+                vars.put("classExpired", expiredWarning);
             } else {
                 vars.put("issued", l.getTranslation("N/A"));
                 vars.put("expire", l.getTranslation("N/A"));
             }
+
             if (st == CertificateStatus.REVOKED) {
                 vars.put("revoked", c.getRevocationDate());
             } else {
-                vars.put("revoked", "n/a");
+                vars.put("revoked", l.getTranslation("N/A"));
             }
         } catch (IOException e) {
             e.printStackTrace();
         } catch (GeneralSecurityException e) {
             e.printStackTrace();
         }
+        if (c.isLoginEnabled()) {
+            vars.put("login", l.getTranslation("No"));
+        } else {
+            vars.put("login", l.getTranslation("Yes"));
+        }
         return true;
     }
 }