]> WPIA git - gigi.git/blob - src/org/cacert/gigi/pages/admin/support/FindUserPage.java
Clean: use "authorizationContexts"
[gigi.git] / src / org / cacert / gigi / pages / admin / support / FindUserPage.java
1 package org.cacert.gigi.pages.admin.support;
2
3 import java.io.IOException;
4 import java.util.HashMap;
5 import java.util.Map;
6
7 import javax.servlet.http.HttpServletRequest;
8 import javax.servlet.http.HttpServletResponse;
9
10 import org.cacert.gigi.GigiApiException;
11 import org.cacert.gigi.dbObjects.Group;
12 import org.cacert.gigi.dbObjects.User;
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.pages.Page;
17 import org.cacert.gigi.util.AuthorizationContext;
18
19 public class FindUserPage extends Page {
20
21     public static final String PATH = "/support/find/user";
22
23     public FindUserPage(String title) {
24         super(title);
25     }
26
27     @Override
28     public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
29         HashMap<String, Object> vars = new HashMap<String, Object>();
30         vars.put("first", true);
31         new FindUserForm(req).output(resp.getWriter(), Page.getLanguage(req), vars);
32     }
33
34     @Override
35     public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
36         FindUserForm form = Form.getForm(req, FindUserForm.class);
37         try {
38             form.submit(resp.getWriter(), req);
39             final User[] users = form.getUsers();
40             if (users.length == 1) {
41                 resp.sendRedirect(SupportUserDetailsPage.PATH + users[0].getId());
42             } else {
43                 HashMap<String, Object> vars = new HashMap<String, Object>();
44                 vars.put("first", false);
45                 vars.put("usertable", new IterableDataset() {
46
47                     int i = 0;
48
49                     @Override
50                     public boolean next(Language l, Map<String, Object> vars) {
51                         if (i == users.length) {
52                             return false;
53                         }
54                         vars.put("usrid", users[i].getId());
55                         vars.put("usermail", users[i].getEmail());
56                         i++;
57                         return true;
58                     }
59                 });
60                 form.output(resp.getWriter(), getLanguage(req), vars);
61             }
62         } catch (GigiApiException e) {
63             e.format(resp.getWriter(), Page.getLanguage(req));
64             doGet(req, resp);
65         }
66     }
67
68     @Override
69     public boolean isPermitted(AuthorizationContext ac) {
70         return ac != null && ac.isInGroup(Group.SUPPORTER);
71     }
72
73 }