X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;ds=sidebyside;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Faccount%2FMyDetailsForm.java;h=813902289e623f925e5b89c2d9dad7ef10123169;hb=f2ba62daa9e723daf903d021ba2d2549b2c1895f;hp=a8ca49fc5d471e377fc0224b989604f744302482;hpb=ff18b96af5b8d9b2a57e9f01ed54b414147d065b;p=gigi.git diff --git a/src/org/cacert/gigi/pages/account/MyDetailsForm.java b/src/org/cacert/gigi/pages/account/MyDetailsForm.java index a8ca49fc..81390228 100644 --- a/src/org/cacert/gigi/pages/account/MyDetailsForm.java +++ b/src/org/cacert/gigi/pages/account/MyDetailsForm.java @@ -2,16 +2,20 @@ 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.GroupSelector; import org.cacert.gigi.output.NameInput; import org.cacert.gigi.output.template.Form; import org.cacert.gigi.output.template.Template; @@ -25,6 +29,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; @@ -33,6 +39,8 @@ public class MyDetailsForm extends Form { private CountrySelector cs; + private GroupSelector selectedGroup = new GroupSelector("groupToModify", false); + public MyDetailsForm(HttpServletRequest hsr, User target) { super(hsr); this.target = target; @@ -95,6 +103,18 @@ public class MyDetailsForm extends Form { cs.update(req); target.setResidenceCountry(cs.getCountry()); } + + if ("addGroup".equals(action) || "removeGroup".equals(action)) { + selectedGroup.update(req); + Group toMod = selectedGroup.getGroup(); + if ("addGroup".equals(action)) { + target.grantGroup(target, toMod); + } else { + target.revokeGroup(target, toMod); + } + return true; + } + } catch (GigiApiException e) { e.format(out, Page.getLanguage(req)); return false; @@ -132,6 +152,7 @@ public class MyDetailsForm extends Form { }); vars.put("name", ni); names.output(out, l, vars); + vars.put("residenceCountry", cs); if (target.getReceivedAssurances().length == 0) { vars.put("DoB", ds); @@ -140,6 +161,12 @@ public class MyDetailsForm extends Form { vars.put("DoB", target.getDoB()); assured.output(out, l, vars); } + + final Set gr = target.getGroups(); + vars.put("support-groups", new GroupIterator(gr.iterator(), true)); + vars.put("groups", new GroupIterator(gr.iterator(), false)); + vars.put("groupSelector", selectedGroup); + roles.output(out, l, vars); } }