]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/account/certs/CertificateModificationForm.java
upd: modified text displayed during certificate creation process
[gigi.git] / src / org / cacert / gigi / pages / account / certs / CertificateModificationForm.java
index 14e6c2fbd3e9827a68814c7a54ad7232855df660..7c3f7840689ea24c9c2c9136896a9a6d19b1d287 100644 (file)
@@ -6,25 +6,26 @@ import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 
+import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.dbObjects.Certificate;
-import org.cacert.gigi.dbObjects.User;
+import org.cacert.gigi.dbObjects.CertificateOwner;
+import org.cacert.gigi.dbObjects.Job;
 import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.output.CertificateIterable;
 import org.cacert.gigi.output.template.Form;
 import org.cacert.gigi.output.template.Template;
 import org.cacert.gigi.pages.LoginPage;
-import org.cacert.gigi.util.Job;
 
 public class CertificateModificationForm extends Form {
 
-    User target;
+    private CertificateOwner target;
 
-    final boolean withRevoked;
+    private final boolean withRevoked;
 
     public CertificateModificationForm(HttpServletRequest hsr, boolean withRevoked) {
         super(hsr);
         this.withRevoked = withRevoked;
-        target = LoginPage.getUser(hsr);
+        target = LoginPage.getAuthorizationContext(hsr).getTarget();
     }
 
     private static final Template certTable = new Template(CertificateIterable.class.getResource("CertificateTable.templ"));
@@ -32,11 +33,14 @@ public class CertificateModificationForm extends Form {
     private static final Template myTemplate = new Template(CertificateModificationForm.class.getResource("CertificateModificationForm.templ"));
 
     @Override
-    public boolean submit(PrintWriter out, HttpServletRequest req) {
+    public SubmissionResult submit(HttpServletRequest req) throws GigiApiException {
+        String action = req.getParameter("action");
+        if ( !"revoke".equals(action)) {
+            throw new GigiApiException("Incorrect action given.");
+        }
         String[] certs = req.getParameterValues("certs[]");
         if (certs == null) {
-            // nothing to do
-            return false;
+            throw new GigiApiException("No certificates to revoke.");
         }
         LinkedList<Job> revokes = new LinkedList<Job>();
         for (String serial : certs) {
@@ -48,25 +52,27 @@ public class CertificateModificationForm extends Form {
         }
         long start = System.currentTimeMillis();
         for (Job job : revokes) {
-            try {
-                int toWait = (int) (60000 + start - System.currentTimeMillis());
-                if (toWait > 0) {
-                    job.waitFor(toWait);
-                } else {
-                    break; // canceled... waited too log
-                }
-            } catch (InterruptedException e) {
-                e.printStackTrace();
+            int toWait = (int) (60000 + start - System.currentTimeMillis());
+            if (toWait > 0) {
+                job.waitFor(toWait);
+            } else {
+                break; // canceled... waited too log
             }
         }
-
-        return false;
+        return new RedirectResult(req.getPathInfo());
     }
 
     @Override
     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);
     }