From 3d1e7ec232f250e1ecb8180675d609b34c62b8c2 Mon Sep 17 00:00:00 2001 From: INOPIAE Date: Fri, 19 Aug 2016 13:19:17 +0200 Subject: [PATCH] add: management of groups by user Change-Id: Ie64d48e7bafdde77338b2fc816a328dde8764164 --- .../gigi/pages/account/MyDetailsForm.java | 25 +++++++++++++++---- .../gigi/pages/account/MyDetailsRoles.templ | 4 ++- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/org/cacert/gigi/pages/account/MyDetailsForm.java b/src/org/cacert/gigi/pages/account/MyDetailsForm.java index d6b65e01..81390228 100644 --- a/src/org/cacert/gigi/pages/account/MyDetailsForm.java +++ b/src/org/cacert/gigi/pages/account/MyDetailsForm.java @@ -15,6 +15,7 @@ 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; @@ -38,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; @@ -100,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; @@ -136,13 +151,8 @@ public class MyDetailsForm extends Form { }); vars.put("name", ni); - final Set 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); @@ -152,6 +162,11 @@ public class MyDetailsForm extends Form { 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); } } diff --git a/src/org/cacert/gigi/pages/account/MyDetailsRoles.templ b/src/org/cacert/gigi/pages/account/MyDetailsRoles.templ index d01dd3f4..d4d7c2f9 100644 --- a/src/org/cacert/gigi/pages/account/MyDetailsRoles.templ +++ b/src/org/cacert/gigi/pages/account/MyDetailsRoles.templ @@ -5,5 +5,7 @@

:

+

:

+ - \ No newline at end of file + -- 2.39.2