]> WPIA git - gigi.git/commitdiff
Merge changes If3dd7037,Ib19bb63a
authorBenny Baumann <BenBE1987@gmx.net>
Tue, 16 Aug 2016 18:01:25 +0000 (20:01 +0200)
committerGerrit Code Review <gigi-system@dogcraft.de>
Tue, 16 Aug 2016 18:01:25 +0000 (20:01 +0200)
* changes:
  add: Highlight certificates outside validity period in Cert Overview
  add: enable that user can see all certificates issued to his account

src/org/cacert/gigi/output/CertificateIterable.java
src/org/cacert/gigi/output/CertificateTable.templ
src/org/cacert/gigi/pages/account/certs/CertificateModificationForm.java
src/org/cacert/gigi/pages/account/certs/CertificateModificationForm.templ
src/org/cacert/gigi/util/CalendarUtil.java

index bb2c493ce3024b16d0e78c4ac05efe8bc4eef4ff..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,14 +38,30 @@ 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 {
index 278b4f7f7bb04c989b9dc9b22808801fa5774ee8..539ac1e15e981a180be7d981fa6b226360fd1058 100644 (file)
@@ -22,9 +22,9 @@
        <td><a href='/account/certs/<?=$serial?>'><?=$serial?></a></td>
        <td><?=$digest?></td>
        <td><?=$profile?></td>
-       <td><?=$issued?></td>
+       <td class="<?=$classIssued?>"><?=$issued?></td>
        <td><?=$revoked?></td>
-       <td><?=$expire?></td>
+       <td class="<?=$classExpired?>"><?=$expire?></td>
        <td><?=$login?></td>
 </tr>
 <? } ?>
index a58f3a6c961e4e5ac7067a17c5c6f855a14f5ed3..fc36792091f27ce0f451937d206f5ec17d5d4085 100644 (file)
@@ -17,9 +17,9 @@ import org.cacert.gigi.pages.LoginPage;
 
 public class CertificateModificationForm extends Form {
 
-    CertificateOwner target;
+    private CertificateOwner target;
 
-    final boolean withRevoked;
+    private final boolean withRevoked;
 
     public CertificateModificationForm(HttpServletRequest hsr, boolean withRevoked) {
         super(hsr);
@@ -33,6 +33,10 @@ public class CertificateModificationForm extends Form {
 
     @Override
     public boolean submit(PrintWriter out, HttpServletRequest req) {
+        String action = req.getParameter("action");
+        if ( !"revoke".equals(action)) {
+            return false;
+        }
         String[] certs = req.getParameterValues("certs[]");
         if (certs == null) {
             // nothing to do
@@ -63,6 +67,13 @@ public class CertificateModificationForm extends Form {
     protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
         vars.put("certs", new CertificateIterable(target.getCertificates(withRevoked)));
         vars.put("certTable", certTable);
+        if (withRevoked) {
+            vars.put("all", "btn-primary");
+            vars.put("current", "btn-info");
+        } else {
+            vars.put("all", "btn-info");
+            vars.put("current", "btn-primary");
+        }
         myTemplate.output(out, l, vars);
     }
 
index 76f60b00b9202be1b0120299496e86a793cb70e8..d4e2f74e90ea3a0a1b29328ba4645506fe805f27 100644 (file)
@@ -1,2 +1,3 @@
+<a href="?" class="btn <?=$current?>"><?=_Show Current Certificates?></a> <a href="?withRevoked" class="btn <?=$all?>"><?=_Show All Certificates?></a>
 <?=$certTable?>
-<input type="submit" value="<?=_Revoke Selected Certificates?>"/>
\ No newline at end of file
+<button class="btn btn-danger" name="action" value="revoke"><?=_Revoke Selected Certificates?></button>
index 03fdf2fceae76b7b2b03a9017b8e729338981148..7d65407779d48f3211f9819d0f2a18e09def1668 100644 (file)
@@ -35,4 +35,11 @@ public class CalendarUtil {
         Date dob = cal.getTime();
         return new DayDate(dob.getTime());
     }
+
+    public static Date timeDifferenceDays(int days) {
+        Calendar c = Calendar.getInstance();
+        c.setTimeInMillis(System.currentTimeMillis());
+        c.add(Calendar.DAY_OF_MONTH, days);
+        return c.getTime();
+    }
 }