]> WPIA git - gigi.git/commitdiff
Merge "Generalize Debian package dependencies"
authorFelix Dörre <felix@dogcraft.de>
Sun, 21 Aug 2016 08:42:42 +0000 (10:42 +0200)
committerGerrit Code Review <gigi-system@dogcraft.de>
Sun, 21 Aug 2016 08:42:42 +0000 (10:42 +0200)
src/org/cacert/gigi/dbObjects/Group.java
src/org/cacert/gigi/output/CertificateIterable.java
src/org/cacert/gigi/output/GroupIterator.java [new file with mode: 0644]
src/org/cacert/gigi/output/GroupSelector.java
src/org/cacert/gigi/output/template/Template.java
src/org/cacert/gigi/pages/account/MyDetailsForm.java
src/org/cacert/gigi/pages/account/MyDetailsRoles.templ [new file with mode: 0644]
src/org/cacert/gigi/pages/account/certs/Certificates.java
src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java
src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.templ

index e85b82775de44d5ad92b604e5b333b5349319a4f..6e250794274ae607a0dd86d6c91d4b046736de45 100644 (file)
@@ -6,26 +6,34 @@ import org.cacert.gigi.output.template.Outputable;
 import org.cacert.gigi.output.template.TranslateCommand;
 
 public enum Group {
-    SUPPORTER("supporter", "supporter"), ARBITRATOR("arbitrator", "arbitrator"), //
-    BLOCKEDASSURER("blockedassurer", "may not verify"), BLOCKEDASSUREE("blockedassuree", "may not be verified"), //
-    BLOCKEDLOGIN("blockedlogin", "may not login"), BLOCKEDCERT("blockedcert", "may not issue certificates"), //
-    TTP_ASSURER("ttp-assurer", "may verify via TTP"), TTP_APPLICANT("ttp-applicant", "requests to be verified via ttp"), //
-    CODESIGNING("codesigning", "may issue codesigning certificates"), ORGASSURER("orgassurer", "may verify organisations"), //
-    NUCLEUS_ASSURER("nucleus-assurer", "may enter nucleus verifications"), LOCATE_AGENT("locate-agent", "wants access to the locate agent system");
+    SUPPORTER("supporter", "supporter", true), ARBITRATOR("arbitrator", "arbitrator", true), //
+    BLOCKEDASSURER("blockedassurer", "may not verify", true), BLOCKEDASSUREE("blockedassuree", "may not be verified", true), //
+    BLOCKEDLOGIN("blockedlogin", "may not login", true), BLOCKEDCERT("blockedcert", "may not issue certificates", true), //
+    TTP_ASSURER("ttp-assurer", "may verify via TTP", true), TTP_APPLICANT("ttp-applicant", "requests to be verified via ttp", true), //
+    CODESIGNING("codesigning", "may issue codesigning certificates", true), ORGASSURER("orgassurer", "may verify organisations", true), //
+    NUCLEUS_ASSURER("nucleus-assurer", "may enter nucleus verifications", true), LOCATE_AGENT("locate-agent", "wants access to the locate agent system", false);
 
     private final String dbName;
 
     private final TranslateCommand tc;
 
-    private Group(String name, String display) {
+    private final boolean managedBySupport; // true if flag is handled by
+                                            // support, false if handled by user
+
+    private Group(String name, String display, boolean managedBySupport) {
         dbName = name;
         tc = new TranslateCommand(display);
+        this.managedBySupport = managedBySupport;
     }
 
     public static Group getByString(String name) {
         return valueOf(name.toUpperCase().replace('-', '_'));
     }
 
+    public boolean isManagedBySupport() {
+        return managedBySupport;
+    }
+
     public String getDatabaseName() {
         return dbName;
     }
index afc883ff4a13544a04df6bcb6fd91d70c4965a23..9e55141155d9f25fd9bcd59bccb998b91f635a5a 100644 (file)
@@ -72,11 +72,7 @@ public class CertificateIterable implements IterableDataset {
         } catch (GeneralSecurityException e) {
             e.printStackTrace();
         }
-        if (c.isLoginEnabled()) {
-            vars.put("login", l.getTranslation("No"));
-        } else {
-            vars.put("login", l.getTranslation("Yes"));
-        }
+        vars.put("login", c.isLoginEnabled());
         return true;
     }
 }
diff --git a/src/org/cacert/gigi/output/GroupIterator.java b/src/org/cacert/gigi/output/GroupIterator.java
new file mode 100644 (file)
index 0000000..4e35db4
--- /dev/null
@@ -0,0 +1,37 @@
+package org.cacert.gigi.output;
+
+import java.util.Iterator;
+import java.util.Map;
+
+import org.cacert.gigi.dbObjects.Group;
+import org.cacert.gigi.localisation.Language;
+import org.cacert.gigi.output.template.IterableDataset;
+
+public class GroupIterator implements IterableDataset {
+
+    private final boolean asSupport;
+
+    private final Iterator<Group> i;
+
+    public GroupIterator(Iterator<Group> i, boolean asSupport) {
+        this.asSupport = asSupport;
+        this.i = i;
+    }
+
+    private int j = 0;
+
+    @Override
+    public boolean next(Language l, Map<String, Object> vars) {
+        while (i.hasNext()) {
+            Group g = i.next();
+            if (g.isManagedBySupport() == asSupport) {
+                vars.put("group_concat", (j > 0 ? ", " : ""));
+                vars.put("group", g.getName());
+                j++;
+                return true;
+            }
+        }
+
+        return false;
+    }
+}
index a26be9b8bbae20174ac3165d62b4da5f3e64a841..66236e1610bb64657381f049b846552eb5240157 100644 (file)
@@ -13,12 +13,15 @@ import org.cacert.gigi.util.HTMLEncoder;
 
 public class GroupSelector implements Outputable {
 
-    String name;
+    private final String name;
 
-    Group value = null;
+    private Group value = null;
 
-    public GroupSelector(String name) {
+    private final boolean supportFlag;
+
+    public GroupSelector(String name, boolean supportFlag) {
         this.name = HTMLEncoder.encodeHTML(name);
+        this.supportFlag = supportFlag;
     }
 
     public void update(HttpServletRequest r) throws GigiApiException {
@@ -35,11 +38,15 @@ public class GroupSelector implements Outputable {
     public void output(PrintWriter out, Language l, Map<String, Object> vars) {
         out.println("<select name='" + name + "'>");
         for (Group g : Group.values()) {
-            out.print("<option name='" + g.getDatabaseName());
-            if (g.equals(value)) {
-                out.print(" selected");
+            if (supportFlag == g.isManagedBySupport()) {
+                out.print("<option value='" + g.getDatabaseName());
+                if (g.equals(value)) {
+                    out.print(" selected");
+                }
+                out.println("'>");
+                g.getName().output(out, l, vars);
+                out.println("</option>");
             }
-            out.println("'>" + g.getDatabaseName() + "</option>");
         }
         out.println("</select>");
     }
index dfb7b46382f92c8b36e9a207fb28687016bf9eb5..8c633c422934d415b7da3b813bc5d44512f00753 100644 (file)
@@ -224,6 +224,8 @@ public class Template implements Outputable {
             ((Outputable) s).output(out, l, vars);
         } else if (s instanceof DayDate) {
             out.print(DateSelector.getDateFormat().format(((DayDate) s).toDate()));
+        } else if (s instanceof Boolean) {
+            out.print(((Boolean) s) ? l.getTranslation("yes") : l.getTranslation("no"));
         } else if (s instanceof Date) {
             SimpleDateFormat sdfUI = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
index a8ca49fc5d471e377fc0224b989604f744302482..d6b65e01842877154e0fc1c1307881ff96b2152a 100644 (file)
@@ -2,16 +2,19 @@ package org.cacert.gigi.pages.account;
 
 import java.io.PrintWriter;
 import java.util.Map;
+import java.util.Set;
 
 import javax.servlet.http.HttpServletRequest;
 
 import org.cacert.gigi.GigiApiException;
+import org.cacert.gigi.dbObjects.Group;
 import org.cacert.gigi.dbObjects.Name;
 import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.output.ArrayIterable;
 import org.cacert.gigi.output.CountrySelector;
 import org.cacert.gigi.output.DateSelector;
+import org.cacert.gigi.output.GroupIterator;
 import org.cacert.gigi.output.NameInput;
 import org.cacert.gigi.output.template.Form;
 import org.cacert.gigi.output.template.Template;
@@ -25,6 +28,8 @@ public class MyDetailsForm extends Form {
 
     private static final Template names = new Template(MyDetailsForm.class.getResource("NamesForm.templ"));
 
+    private static final Template roles = new Template(MyDetailsForm.class.getResource("MyDetailsRoles.templ"));
+
     private User target;
 
     private DateSelector ds;
@@ -131,7 +136,13 @@ public class MyDetailsForm extends Form {
 
         });
         vars.put("name", ni);
+        final Set<Group> gr = target.getGroups();
         names.output(out, l, vars);
+
+        vars.put("support-groups", new GroupIterator(gr.iterator(), true));
+        vars.put("groups", new GroupIterator(gr.iterator(), false));
+        roles.output(out, l, vars);
+
         vars.put("residenceCountry", cs);
         if (target.getReceivedAssurances().length == 0) {
             vars.put("DoB", ds);
@@ -140,6 +151,7 @@ public class MyDetailsForm extends Form {
             vars.put("DoB", target.getDoB());
             assured.output(out, l, vars);
         }
+
     }
 
 }
diff --git a/src/org/cacert/gigi/pages/account/MyDetailsRoles.templ b/src/org/cacert/gigi/pages/account/MyDetailsRoles.templ
new file mode 100644 (file)
index 0000000..d01dd3f
--- /dev/null
@@ -0,0 +1,9 @@
+<div class="panel panel-default">
+  <div class="panel-heading"><?=_Permissions / Group Assignments?></div>
+  <div class="panel-body">
+  <h4><?=_Support Managed Permissions?>:</h4>
+  <? foreach($support-groups) { ?><?=$group_concat?><?=$group?><? } ?>
+  <h4><?=_User Managed Permissions?>:</h4>
+  <? foreach($groups) { ?><?=$group_concat?><?=$group?><? } ?>
+  </div>
+</div>
\ No newline at end of file
index 45ca5637ceb0f018d582663fced91abd6a2077a6..04eaa8d5ffc33b68fba1b39b7127d6a27d902f14 100644 (file)
@@ -208,11 +208,7 @@ public class Certificates extends Page implements HandlesMixedRequest {
                         return true;
                     }
                 });
-                if (c.isLoginEnabled()) {
-                    vars.put("login", l.getTranslation("Yes"));
-                } else {
-                    vars.put("login", l.getTranslation("No"));
-                }
+                vars.put("login", c.isLoginEnabled());
             } catch (GeneralSecurityException e) {
                 e.printStackTrace();
             }
index 8b37e903c8b3950f8870c13bc591e5e43e97730c..28597ca2f8bcc9f25b9bb227f05895ae23ab66dc 100644 (file)
@@ -1,7 +1,6 @@
 package org.cacert.gigi.pages.admin.support;
 
 import java.io.PrintWriter;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
@@ -15,9 +14,9 @@ import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.output.ArrayIterable;
 import org.cacert.gigi.output.DateSelector;
+import org.cacert.gigi.output.GroupIterator;
 import org.cacert.gigi.output.GroupSelector;
 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.SprintfCommand;
 import org.cacert.gigi.output.template.Template;
@@ -32,7 +31,7 @@ public class SupportUserDetailsForm extends Form {
 
     private DateSelector dobSelector;
 
-    private GroupSelector value = new GroupSelector("groupToModify");
+    private GroupSelector value = new GroupSelector("groupToModify", true);
 
     public SupportUserDetailsForm(HttpServletRequest hsr, SupportedUser user) {
         super(hsr);
@@ -107,20 +106,8 @@ public class SupportUserDetailsForm extends Form {
         vars.put("assurancepoints", user.getAssurancePoints());
         vars.put("exppoints", user.getExperiencePoints());
         final Set<Group> gr = user.getGroups();
-        vars.put("groups", new IterableDataset() {
-
-            Iterator<Group> i = gr.iterator();
-
-            @Override
-            public boolean next(Language l, Map<String, Object> vars) {
-                if ( !i.hasNext()) {
-                    return false;
-                }
-                Group g = i.next();
-                vars.put("group_name", g.getName());
-                return true;
-            }
-        });
+        vars.put("support-groups", new GroupIterator(gr.iterator(), true));
+        vars.put("groups", new GroupIterator(gr.iterator(), false));
         vars.put("groupSelector", value);
         t.output(out, l, vars);
     }
index e259cd26404698d0144275b79282942555bec0c7..ced40d83adf6b909906a02f34b5235163f5388d5 100644 (file)
         </tr>
         
         <tr>
-            <td><?=_Groups?>:</td>
-            <td><p><? foreach($groups) { ?><?=$group_name?>, <? } ?></p>
+            <td><?=_Support Managed Groups?>:</td>
+            <td><p><? foreach($support-groups) { ?><?=$group_concat?><?=$group?><? } ?></p>
             <p><?=$groupSelector?><input class="btn btn-info" type='submit' value='<?=_Grant Group?>' name='grant'> <input class="btn btn-info" type='submit' value='<?=_Deny Group?>' name='deny'></p>
             </td>
         </tr>
+
+        <tr>
+            <td><?=_User Managed Groups?>:</td>
+            <td><p><? foreach($groups) { ?><?=$group_concat?><?=$group?><? } ?></p>
+            </td>
+        </tr>
+
         <tr>
             <td><?=_Reset Password?>:</td>
             <td><input type="text" name="aword"> <input class="btn btn-primary" type="submit" value="<?=_Reset Password?>" name="resetPass"></td>