X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;ds=sidebyside;f=src%2Fclub%2Fwpia%2Fgigi%2Fpages%2Fadmin%2Fsupport%2FSupportUserDetailsForm.java;h=7445c52c54946cc87c00c02780aebdefeef88f20;hb=30d927a45f76ad0e28cae6e12a850be61ca22ebc;hp=a7b1be77b4fbe9332cc834eab9b12ab8ba449d56;hpb=08c941629aea14473e5c42ab6f5d590be4af4bf8;p=gigi.git diff --git a/src/club/wpia/gigi/pages/admin/support/SupportUserDetailsForm.java b/src/club/wpia/gigi/pages/admin/support/SupportUserDetailsForm.java index a7b1be77..7445c52c 100644 --- a/src/club/wpia/gigi/pages/admin/support/SupportUserDetailsForm.java +++ b/src/club/wpia/gigi/pages/admin/support/SupportUserDetailsForm.java @@ -6,6 +6,7 @@ import java.util.Set; import javax.servlet.http.HttpServletRequest; +import club.wpia.gigi.Gigi; import club.wpia.gigi.GigiApiException; import club.wpia.gigi.dbObjects.Group; import club.wpia.gigi.dbObjects.Name; @@ -14,12 +15,14 @@ import club.wpia.gigi.dbObjects.User; import club.wpia.gigi.localisation.Language; import club.wpia.gigi.output.ArrayIterable; import club.wpia.gigi.output.DateSelector; -import club.wpia.gigi.output.GroupIterator; +import club.wpia.gigi.output.GroupList; import club.wpia.gigi.output.GroupSelector; import club.wpia.gigi.output.template.Form; import club.wpia.gigi.output.template.Template; import club.wpia.gigi.output.template.TranslateCommand; import club.wpia.gigi.pages.LoginPage; +import club.wpia.gigi.pages.account.MyDetails; +import club.wpia.gigi.util.AuthorizationContext; public class SupportUserDetailsForm extends Form { @@ -42,12 +45,31 @@ public class SupportUserDetailsForm extends Form { if (user.getTicket() == null) { throw new GigiApiException("No ticket number set."); } + + int numActions = 0; + numActions += req.getParameter("detailupdate") != null ? 1 : 0; + numActions += req.getParameter("addGroup") != null ? 1 : 0; + numActions += req.getParameter("removeGroup") != null ? 1 : 0; + numActions += req.getParameter("resetPass") != null ? 1 : 0; + + if (numActions != 1) { + throw new GigiApiException("More than one action requested!"); + } + if (user.getTargetUser() == LoginPage.getUser(req)) { + if (req.getParameter("removeGroup") != null) { + value.update(req); + Group toMod = value.getGroup(); + if (toMod == Group.SUPPORTER) { + user.revoke(toMod); + AuthorizationContext ac = LoginPage.getAuthorizationContext(req); + req.getSession().setAttribute(Gigi.AUTH_CONTEXT, new AuthorizationContext(ac.getActor(), ac.getActor())); + return new RedirectResult(MyDetails.PATH); + } + } throw new GigiApiException("Supporter may not modify himself."); } - if ((req.getParameter("detailupdate") != null ? 1 : 0) + (req.getParameter("addGroup") != null ? 1 : 0) + (req.getParameter("removeGroup") != null ? 1 : 0) + (req.getParameter("resetPass") != null ? 1 : 0) != 1) { - throw new GigiApiException("More than one action requested!"); - } + if (req.getParameter("addGroup") != null || req.getParameter("removeGroup") != null) { value.update(req); Group toMod = value.getGroup(); @@ -84,6 +106,7 @@ public class SupportUserDetailsForm extends Form { @Override public void apply(Name t, Language l, Map vars) { vars.put("name", t); + vars.put("preferred", t.getOwner().getPreferredName() == t); vars.put("points", Integer.toString(t.getVerificationPoints())); } @@ -93,8 +116,8 @@ public class SupportUserDetailsForm extends Form { vars.put("verificationPoints", user.getVerificationPoints()); vars.put("exppoints", user.getExperiencePoints()); final Set gr = user.getGroups(); - vars.put("support-groups", new GroupIterator(gr.iterator(), true)); - vars.put("groups", new GroupIterator(gr.iterator(), false)); + vars.put("support-groups", new GroupList(gr, true)); + vars.put("groups", new GroupList(gr, false)); vars.put("groupSelector", value); t.output(out, l, vars); }