target.rawUpdateUserData();
}
+ public void grant(Group toMod) {
+ target.grantGroup(supporter, toMod);
+ }
+
+ public void revoke(Group toMod) {
+ target.revokeGroup(supporter, toMod);
+ }
+
}
import org.cacert.gigi.GigiApiException;
import org.cacert.gigi.localisation.Language;
import org.cacert.gigi.output.template.Outputable;
+import org.cacert.gigi.util.HTMLEncoder;
public class DateSelector implements Outputable {
public DateSelector(String day, String month, String year) {
this.names = new String[] {
- day, month, year
+ HTMLEncoder.encodeHTML(day), HTMLEncoder.encodeHTML(month), HTMLEncoder.encodeHTML(year)
};
}
--- /dev/null
+package org.cacert.gigi.output;
+
+import java.io.PrintWriter;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.cacert.gigi.GigiApiException;
+import org.cacert.gigi.dbObjects.Group;
+import org.cacert.gigi.localisation.Language;
+import org.cacert.gigi.output.template.Outputable;
+import org.cacert.gigi.util.HTMLEncoder;
+
+public class GroupSelector implements Outputable {
+
+ String name;
+
+ Group value = null;
+
+ public GroupSelector(String name) {
+ this.name = HTMLEncoder.encodeHTML(name);
+ }
+
+ public void update(HttpServletRequest r) throws GigiApiException {
+ String vS = r.getParameter(name);
+ value = null;
+ for (Group g : Group.values()) {
+ if (g.getDatabaseName().equals(vS)) {
+ value = g;
+ }
+ }
+ }
+
+ @Override
+ 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");
+ }
+ out.println("'>" + g.getDatabaseName() + "</option>");
+ }
+ out.println("</select>");
+ }
+
+ public Group getGroup() {
+ return value;
+ }
+}
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
+import java.util.Iterator;
import java.util.Map;
+import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.cacert.gigi.email.Sendmail;
import org.cacert.gigi.localisation.Language;
import org.cacert.gigi.output.DateSelector;
+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.Template;
import org.cacert.gigi.pages.Page;
import org.cacert.gigi.pages.PasswordResetPage;
private DateSelector dobSelector;
+ private GroupSelector value = new GroupSelector("groupToModify");
+
static {
t = new Template(FindDomainForm.class.getResource("SupportUserDetailsForm.templ"));
}
if (user.getTicket() == null) {
return false;
}
+ if ((req.getParameter("detailupdate") != null ? 1 : 0) + (req.getParameter("grant") != null ? 1 : 0) + (req.getParameter("deny") != null ? 1 : 0) + (req.getParameter("resetPass") != null ? 1 : 0) != 1) {
+ throw new GigiApiException("More than one action requested!");
+ }
+ if (req.getParameter("grant") != null || req.getParameter("deny") != null) {
+ value.update(req);
+ Group toMod = value.getGroup();
+ if (req.getParameter("grant") != null) {
+ user.grant(toMod);
+ } else {
+ user.revoke(toMod);
+ }
+ return true;
+ }
if (req.getParameter("resetPass") != null) {
String aword = req.getParameter("aword");
if (aword == null || aword.equals("")) {
vars.put("suffix", name.getSuffix());
vars.put("assurer", user.canAssure());
vars.put("dob", dobSelector);
- vars.put("blockedassurer", user.isInGroup(Group.BLOCKEDASSURER));
- vars.put("codesign", user.isInGroup(Group.CODESIGNING));
- vars.put("orgassurer", user.isInGroup(Group.ORGASSURER));
vars.put("assurancepoints", user.getAssurancePoints());
- vars.put("blockedassuree", user.isInGroup(Group.BLOCKEDASSUREE));
- vars.put("ttpassurer", user.isInGroup(Group.TTP_ASSURER));
- vars.put("ttpapplicant", user.isInGroup(Group.TTP_APPLICANT));
- vars.put("blockedlogin", user.isInGroup(Group.BLOCKEDLOGIN));
- vars.put("supporter", user.isInGroup(Group.SUPPORTER));
+ vars.put("exppoints", user.getExperiencePoints());
vars.put("id", user.getId());
+ 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", l.getTranslation("Group: " + g.getDatabaseName()));
+ return true;
+ }
+ });
+ vars.put("groupSelector", value);
t.output(out, l, vars);
}
<? } ?>
</td>
</tr>
- <tr>
- <td><?=_Blocked Assurer?>:</td>
- <td>
- <? if($blockedassurer) { ?>
- <?=_Yes?>
- <? } else { ?>
- <?=_No?>
- <? } ?>
- </td>
+ <tr>
+ <td><?=_Assurance Points?>:</td>
+ <td><?=$assurancepoints?></td>
</tr>
<tr>
- <td><?=_Account Locking?>:</td>
- <td>
- <? if($locked) { ?>
- <?=_Yes?>
- <? } else { ?>
- <?=_No?>
- <? } ?>
- </td>
+ <td><?=_Experience Points?>:</td>
+ <td><?=$exppoints?></td>
</tr>
+
<tr>
- <td><?=_Code Signing?>:</td>
- <td><? if($codesign) { ?>
- <?=_Yes?>
- <? } else { ?>
- <?=_No?>
- <? } ?>
+ <td><?=_Groups?>:</td>
+ <td><p><? foreach($groups) { ?><?=$group_name?>, <? } ?></p>
+ <p><?=$groupSelector?><input type='submit' value='<?=_Grant Group?>' name='grant'><input type='submit' value='<?=_Deny Group?>' name='deny'></p>
</td>
</tr>
<tr>
- <td><?=_Org Assurer?>:</td>
- <td>
- <? if($orgassurer) { ?>
- <?=_Yes?>
- <? } else { ?>
- <?=_No?>
- <? } ?>
-</td>
- </tr>
- <tr>
- <td><?=_TTP Admin?>:</td>
- <td>
-<? if($ttpadmin) { ?>
- <?=_Yes?>
- <? } else { ?>
- <?=_No?>
- <? } ?>
-</td>
- </tr>
- <tr>
- <td><?=_Supporter?>:</td>
- <td>
-<? if($supporter) { ?>
- <?=_Yes?>
- <? } else { ?>
- <?=_No?>
- <? } ?>
-</td>
- </tr>
- <tr>
<td><?=_Reset Password?>:</td>
<td><input type="text" name="aword"> <input type="submit" value="<?=_Reset Password?>" name="resetPass"></td>
</tr>
</tr>
<tr>
<td><?=_Show Lost Password Details?></td>
- </tr>
- <tr>
- <td><?=_Assurance Points?>:</td>
- <td><?=$assurancepoints?></td>
</tr>
<tr>
<td colspan="2"><a href="./<?=$id?>/history"><?=_Show account history?></a></td>
if ( !Form.getForm(req, SupportRevokeCertificatesForm.class).submit(resp.getWriter(), req)) {
throw new GigiApiException("No ticket number set.");
}
- } else if (req.getParameter("detailupdate") != null || req.getParameter("resetPass") != null) {
+ } else if (req.getParameter("detailupdate") != null || req.getParameter("resetPass") != null || req.getParameter("deny") != null || req.getParameter("grant") != null) {
if ( !Form.getForm(req, SupportUserDetailsForm.class).submit(resp.getWriter(), req)) {
throw new GigiApiException("No ticket number set.");
}