X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Fclub%2Fwpia%2Fgigi%2Fpages%2FMainPage.java;h=7fb5228e0df1a425c9bfa4083b2305a7672586e5;hp=f55e90d309b113b886a1e0ebd58df32a03c0ad9d;hb=f1328bd450dd974c5c7327f503ee0dd7f1620b8a;hpb=d71624703243c182beb0f946ebc582e0366a4686 diff --git a/src/club/wpia/gigi/pages/MainPage.java b/src/club/wpia/gigi/pages/MainPage.java index f55e90d3..7fb5228e 100644 --- a/src/club/wpia/gigi/pages/MainPage.java +++ b/src/club/wpia/gigi/pages/MainPage.java @@ -1,11 +1,23 @@ package club.wpia.gigi.pages; import java.io.IOException; +import java.util.Iterator; +import java.util.List; import java.util.Map; +import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import club.wpia.gigi.dbObjects.Certificate; +import club.wpia.gigi.dbObjects.Domain; +import club.wpia.gigi.dbObjects.EmailAddress; +import club.wpia.gigi.dbObjects.Group; +import club.wpia.gigi.dbObjects.Organisation; +import club.wpia.gigi.dbObjects.User; +import club.wpia.gigi.localisation.Language; +import club.wpia.gigi.output.GroupList; +import club.wpia.gigi.output.template.IterableDataset; import club.wpia.gigi.output.template.Template; public class MainPage extends Page { @@ -20,7 +32,85 @@ public class MainPage extends Page { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { Map vars = getDefaultVars(req); if (LoginPage.getUser(req) != null) { + User u = LoginPage.getUser(req); + vars.put("username", u.getPreferredName()); + final Set gr = u.getGroups(); + vars.put("support-groups", new GroupList(gr, true)); + vars.put("groups", new GroupList(gr, false)); + vars.put("ra-agent", u.canVerify()); + vars.put("vp", u.getVerificationPoints()); + vars.put("xp", u.getExperiencePoints()); + + Certificate[] c = u.getCertificates(false); + vars.put("c-no", c.length); + + final EmailAddress[] emails = u.getEmails(); + IterableDataset ds = new IterableDataset() { + + private int point = 0; + + @Override + public boolean next(Language l, Map vars) { + if (point >= emails.length) { + return false; + } + EmailAddress emailAddress = emails[point]; + vars.put("verification", l.getTranslation(emailAddress.isVerified() ? "Verified" : "Unverified")); + vars.put("last_verification", emailAddress.getLastPing(true)); + vars.put("address", emailAddress.getAddress()); + point++; + return true; + } + }; + vars.put("emails", ds); + + final Domain[] doms = u.getDomains(); + IterableDataset dts = new IterableDataset() { + + private int point = 0; + + @Override + public boolean next(Language l, Map vars) { + if (point >= doms.length) { + return false; + } + Domain domain = doms[point]; + vars.put("domain", domain.getSuffix()); + vars.put("status", l.getTranslation(domain.isVerified() ? "Verified" : "Unverified")); + point++; + return true; + } + }; + vars.put("domains", dts); + vars.put("nodomains", doms.length == 0); + + final List o = u.getOrganisations(); + vars.put("orgas", new IterableDataset() { + + Iterator it = o.iterator(); + + @Override + public boolean next(Language l, Map vars) { + if ( !it.hasNext()) { + return false; + } + Organisation o = it.next(); + vars.put("orgName", o.getName()); + vars.put("orgID", o.getId()); + return true; + } + }); + vars.put("hasorgs", !o.isEmpty()); + + if (u.isInGroup(Group.SUPPORTER) || u.isInGroup(Group.ORG_AGENT) || u.isInGroup(Group.TTP_AGENT) || u.canVerify() || !o.isEmpty()) { + vars.put("certlogin", LoginPage.getAuthorizationContext(req).isStronglyAuthenticated()); + vars.put("certlogininfo", true); + } else { + vars.put("certlogininfo", false); + } + getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars); + } else { notLog.output(resp.getWriter(), getLanguage(req), vars); }