1 package club.wpia.gigi.pages;
3 import java.io.IOException;
4 import java.util.Iterator;
9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
12 import club.wpia.gigi.dbObjects.Certificate;
13 import club.wpia.gigi.dbObjects.Domain;
14 import club.wpia.gigi.dbObjects.EmailAddress;
15 import club.wpia.gigi.dbObjects.Group;
16 import club.wpia.gigi.dbObjects.Organisation;
17 import club.wpia.gigi.dbObjects.User;
18 import club.wpia.gigi.localisation.Language;
19 import club.wpia.gigi.output.GroupList;
20 import club.wpia.gigi.output.template.IterableDataset;
21 import club.wpia.gigi.output.template.Template;
22 import club.wpia.gigi.util.ServerConstants;
24 public class MainPage extends Page {
26 private static final Template notLog = new Template(MainPage.class.getResource("MainPageNotLogin.templ"));
28 private static final Template notLogCommunity = new Template(MainPage.class.getResource("MainPageNotLoginCommunity.templ"));
35 public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
36 Map<String, Object> vars = getDefaultVars(req);
37 if (LoginPage.getUser(req) != null) {
38 User u = LoginPage.getUser(req);
39 vars.put("username", u.getPreferredName());
40 final Set<Group> gr = u.getGroups();
41 vars.put("support-groups", new GroupList(gr, true));
42 vars.put("groups", new GroupList(gr, false));
43 vars.put("ra-agent", u.canVerify());
44 vars.put("vp", u.getVerificationPoints());
45 vars.put("xp", u.getExperiencePoints());
47 vars.put("catsinfo", false);
48 if (u.canVerify() && !u.hasValidRAChallenge()) {
49 vars.put("catsinfo", true);
50 vars.put("catsra", true);
52 if (u.isInGroup(Group.SUPPORTER) && !u.hasValidSupportChallenge()) {
53 vars.put("catsinfo", true);
54 vars.put("catssupport", true);
56 if (u.isInGroup(Group.ORG_AGENT) && !u.hasValidOrgAgentChallenge()) {
57 vars.put("catsinfo", true);
58 vars.put("catsorgagent", true);
60 if (u.isInGroup(Group.TTP_AGENT) && !u.hasValidTTPAgentChallenge()) {
61 vars.put("catsinfo", true);
62 vars.put("catsttpagent", true);
65 Certificate[] c = u.getCertificates(false);
66 vars.put("c-no", c.length);
68 final EmailAddress[] emails = u.getEmails();
69 IterableDataset ds = new IterableDataset() {
71 private int point = 0;
74 public boolean next(Language l, Map<String, Object> vars) {
75 if (point >= emails.length) {
78 EmailAddress emailAddress = emails[point];
79 vars.put("verification", l.getTranslation(emailAddress.isVerified() ? "Verified" : "Unverified"));
80 vars.put("last_verification", emailAddress.getLastPing(true));
81 vars.put("address", emailAddress.getAddress());
86 vars.put("emails", ds);
88 final Domain[] doms = u.getDomains();
89 IterableDataset dts = new IterableDataset() {
91 private int point = 0;
94 public boolean next(Language l, Map<String, Object> vars) {
95 if (point >= doms.length) {
98 Domain domain = doms[point];
99 vars.put("domain", domain.getSuffix());
100 vars.put("status", l.getTranslation(domain.isVerified() ? "Verified" : "Unverified"));
105 vars.put("domains", dts);
106 vars.put("nodomains", doms.length == 0);
108 final List<Organisation> o = u.getOrganisations();
109 vars.put("orgas", new IterableDataset() {
111 Iterator<Organisation> it = o.iterator();
114 public boolean next(Language l, Map<String, Object> vars) {
115 if ( !it.hasNext()) {
118 Organisation o = it.next();
119 vars.put("orgName", o.getName());
120 vars.put("orgID", o.getId());
124 vars.put("hasorgs", !o.isEmpty());
126 if (u.isInGroup(Group.SUPPORTER) || u.isInGroup(Group.ORG_AGENT) || u.isInGroup(Group.TTP_AGENT) || u.canVerify() || !o.isEmpty()) {
127 vars.put("certlogin", LoginPage.getAuthorizationContext(req).isStronglyAuthenticated());
128 vars.put("certlogininfo", true);
130 vars.put("certlogininfo", false);
133 if ( !o.isEmpty() && !u.hasValidOrgAdminChallenge()) {
134 vars.put("catsinfo", true);
135 vars.put("catsorgadmin", true);
138 getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars);
141 if (ServerConstants.isCommunityCA()) {
142 notLogCommunity.output(resp.getWriter(), getLanguage(req), vars);
144 notLog.output(resp.getWriter(), getLanguage(req), vars);
150 public boolean needsLogin() {