import javax.servlet.http.HttpServletRequest;
+import club.wpia.gigi.Gigi;
import club.wpia.gigi.GigiApiException;
+import club.wpia.gigi.dbObjects.Contract;
import club.wpia.gigi.dbObjects.Group;
import club.wpia.gigi.dbObjects.Name;
import club.wpia.gigi.dbObjects.SupportedUser;
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 {
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(), ac.isStronglyAuthenticated()));
+ 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();
@Override
public void apply(Name t, Language l, Map<String, Object> vars) {
vars.put("name", t);
- vars.put("points", Integer.toString(t.getAssurancePoints()));
+ vars.put("preferred", t.getOwner().getPreferredName() == t);
+ vars.put("points", Integer.toString(t.getVerificationPoints()));
}
});
- vars.put("assurer", user.canAssure());
+ vars.put("agent", user.canVerify());
+ vars.put("agentcontract", Contract.hasSignedContract(user, Contract.ContractType.RA_AGENT_CONTRACT));
vars.put("dob", dobSelector);
- vars.put("assurancepoints", user.getAssurancePoints());
+ vars.put("verificationPoints", user.getVerificationPoints());
vars.put("exppoints", user.getExperiencePoints());
final Set<Group> 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);
}