X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Fclub%2Fwpia%2Fgigi%2Fpages%2Fadmin%2Fsupport%2FSupportUserDetailsForm.java;h=aaa4a43ae990ce1cccc8aa7662669c497bd05123;hp=969cbe62fee6d1df01b09f37ec3eff885f48274a;hb=a7306952f95e691322edb592a78e305d1c1b39c4;hpb=20b043532a7adc4f9da9359f42ec002058c91759 diff --git a/src/club/wpia/gigi/pages/admin/support/SupportUserDetailsForm.java b/src/club/wpia/gigi/pages/admin/support/SupportUserDetailsForm.java index 969cbe62..aaa4a43a 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; @@ -20,6 +21,8 @@ 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,25 @@ public class SupportUserDetailsForm extends Form { if (user.getTicket() == null) { throw new GigiApiException("No ticket number set."); } - if (user.getTargetUser() == LoginPage.getUser(req)) { - 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 (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("addGroup") != null || req.getParameter("removeGroup") != null) { value.update(req); Group toMod = value.getGroup();