]> WPIA git - gigi.git/blob - src/org/cacert/gigi/pages/account/MyOrganisationsForm.java
upd: split certificate issuance as organisation into seperate
[gigi.git] / src / org / cacert / gigi / pages / account / MyOrganisationsForm.java
1 package org.cacert.gigi.pages.account;
2
3 import java.io.PrintWriter;
4 import java.util.Enumeration;
5 import java.util.Iterator;
6 import java.util.List;
7 import java.util.Map;
8
9 import javax.servlet.http.HttpServletRequest;
10
11 import org.cacert.gigi.Gigi;
12 import org.cacert.gigi.dbObjects.Organisation;
13 import org.cacert.gigi.localisation.Language;
14 import org.cacert.gigi.output.template.Form;
15 import org.cacert.gigi.output.template.IterableDataset;
16 import org.cacert.gigi.output.template.Template;
17 import org.cacert.gigi.pages.LoginPage;
18 import org.cacert.gigi.util.AuthorizationContext;
19
20 public class MyOrganisationsForm extends Form {
21
22     private AuthorizationContext target;
23
24     public MyOrganisationsForm(HttpServletRequest hsr) {
25         super(hsr);
26         target = LoginPage.getAuthorizationContext(hsr);
27     }
28
29     private static Template template;
30
31     static {
32         template = new Template(MyListingForm.class.getResource("MyOrganisationsForm.templ"));
33     }
34
35     @Override
36     public boolean submit(PrintWriter out, HttpServletRequest req) {
37         if (req.getParameter("org-leave") != null) {
38             req.getSession().setAttribute(Gigi.AUTH_CONTEXT, new AuthorizationContext(target.getActor(), target.getActor()));
39             return true;
40         }
41         Enumeration<String> i = req.getParameterNames();
42         int orgId = -1;
43         while (i.hasMoreElements()) {
44             String s = i.nextElement();
45             if (s.startsWith("org:")) {
46                 int id = Integer.parseInt(s.substring(4));
47                 if (orgId == -1) {
48                     orgId = id;
49                 } else {
50                     out.println(LoginPage.getLanguage(req).getTranslation("Error: invalid parameter."));
51                     return false;
52                 }
53             }
54         }
55         for (Organisation org : target.getActor().getOrganisations()) {
56             if (org.getId() == orgId) {
57
58                 req.getSession().setAttribute(Gigi.AUTH_CONTEXT, new AuthorizationContext(org, target.getActor()));
59                 return true;
60             }
61         }
62         System.out.println("Switch fialed");
63         return false;
64     }
65
66     @Override
67     protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
68         final List<Organisation> o = target.getActor().getOrganisations();
69         if (target.getTarget() != target.getActor()) {
70             vars.put("personal", target.getTarget() != target.getActor());
71         }
72         vars.put("orgas", new IterableDataset() {
73
74             Iterator<Organisation> it = o.iterator();
75
76             @Override
77             public boolean next(Language l, Map<String, Object> vars) {
78                 if ( !it.hasNext()) {
79                     return false;
80                 }
81                 Organisation o = it.next();
82                 vars.put("orgName", o.getName());
83                 vars.put("orgID", o.getId());
84                 return true;
85             }
86         });
87         template.output(out, l, vars);
88
89     }
90
91 }