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;
}
} 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;
}
}
--- /dev/null
+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;
+ }
+}
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 {
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>");
}
((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'");
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;
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;
});
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);
vars.put("DoB", target.getDoB());
assured.output(out, l, vars);
}
+
}
}
--- /dev/null
+<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
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();
}
package org.cacert.gigi.pages.admin.support;
import java.io.PrintWriter;
-import java.util.Iterator;
import java.util.Map;
import java.util.Set;
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;
private DateSelector dobSelector;
- private GroupSelector value = new GroupSelector("groupToModify");
+ private GroupSelector value = new GroupSelector("groupToModify", true);
public SupportUserDetailsForm(HttpServletRequest hsr, SupportedUser user) {
super(hsr);
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);
}
</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>