1 package club.wpia.gigi.pages.orga;
3 import java.io.PrintWriter;
4 import java.util.Enumeration;
5 import java.util.Iterator;
9 import javax.servlet.http.HttpServletRequest;
11 import club.wpia.gigi.Gigi;
12 import club.wpia.gigi.GigiApiException;
13 import club.wpia.gigi.dbObjects.Organisation;
14 import club.wpia.gigi.localisation.Language;
15 import club.wpia.gigi.output.template.Form;
16 import club.wpia.gigi.output.template.IterableDataset;
17 import club.wpia.gigi.output.template.Template;
18 import club.wpia.gigi.pages.LoginPage;
19 import club.wpia.gigi.util.AuthorizationContext;
21 public class MyOrganisationsForm extends Form {
23 private AuthorizationContext target;
25 public MyOrganisationsForm(HttpServletRequest hsr) {
27 target = LoginPage.getAuthorizationContext(hsr);
30 private static final Template template = new Template(MyOrganisationsForm.class.getResource("MyOrganisationsForm.templ"));
33 public SubmissionResult submit(HttpServletRequest req) throws GigiApiException {
34 AuthorizationContext sessionAc = (AuthorizationContext) req.getSession().getAttribute(Gigi.AUTH_CONTEXT);
35 if (req.getParameter("org-leave") != null) {
36 req.getSession().setAttribute(Gigi.AUTH_CONTEXT, new AuthorizationContext(target.getActor(), target.getActor(), sessionAc.isStronglyAuthenticated()));
37 return new RedirectResult(SwitchOrganisation.PATH);
39 Enumeration<String> i = req.getParameterNames();
41 while (i.hasMoreElements()) {
42 String s = i.nextElement();
43 if (s.startsWith("org:")) {
44 int id = Integer.parseInt(s.substring(4));
48 throw new GigiApiException("Error: invalid parameter.");
52 for (Organisation org : target.getActor().getOrganisations()) {
53 if (org.getId() == orgId) {
55 req.getSession().setAttribute(Gigi.AUTH_CONTEXT, new AuthorizationContext(org, target.getActor(), sessionAc.isStronglyAuthenticated()));
56 return new RedirectResult(SwitchOrganisation.PATH);
59 throw new PermamentFormException(new GigiApiException("Context switch failed."));
63 protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
64 final List<Organisation> o = target.getActor().getOrganisations();
65 vars.put("certlogin", target.isStronglyAuthenticated());
66 if (target.getTarget() != target.getActor()) {
67 vars.put("personal", target.getTarget() != target.getActor());
69 vars.put("orgas", new IterableDataset() {
71 Iterator<Organisation> it = o.iterator();
74 public boolean next(Language l, Map<String, Object> vars) {
78 Organisation o = it.next();
79 vars.put("orgName", o.getName());
80 vars.put("orgID", o.getId());
84 template.output(out, l, vars);