From 6100ce303e0cf82bdbd699ec7c3672dcbe8fae7c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Sun, 21 Sep 2014 16:44:51 +0200 Subject: [PATCH] ADD: TTP-Admin draft --- src/org/cacert/gigi/Gigi.java | 2 + src/org/cacert/gigi/dbObjects/Group.java | 20 ++++++ .../cacert/gigi/pages/admin/TTPAdminPage.java | 64 +++++++++++++++++++ .../gigi/pages/admin/TTPAdminPage.templ | 5 ++ 4 files changed, 91 insertions(+) create mode 100644 src/org/cacert/gigi/pages/admin/TTPAdminPage.java create mode 100644 src/org/cacert/gigi/pages/admin/TTPAdminPage.templ diff --git a/src/org/cacert/gigi/Gigi.java b/src/org/cacert/gigi/Gigi.java index f6b02f45..60e785b0 100644 --- a/src/org/cacert/gigi/Gigi.java +++ b/src/org/cacert/gigi/Gigi.java @@ -41,6 +41,7 @@ import org.cacert.gigi.pages.account.certs.CertificateAdd; import org.cacert.gigi.pages.account.certs.Certificates; import org.cacert.gigi.pages.account.domain.DomainOverview; import org.cacert.gigi.pages.account.mail.MailOverview; +import org.cacert.gigi.pages.admin.TTPAdminPage; import org.cacert.gigi.pages.error.PageNotFound; import org.cacert.gigi.pages.main.RegisterPage; import org.cacert.gigi.pages.wot.AssurePage; @@ -106,6 +107,7 @@ public class Gigi extends HttpServlet { putPage(DomainOverview.PATH + "*", new DomainOverview("Domains"), "Certificates"); putPage(MyPoints.PATH, new MyPoints("My Points"), "CAcert Web of Trust"); putPage(RequestTTPPage.PATH, new RequestTTPPage(), "CAcert Web of Trust"); + putPage(TTPAdminPage.PATH + "/*", new TTPAdminPage(), "Admin"); putPage("/wot/rules", new StaticPage("CAcert Web of Trust Rules", AssurePage.class.getResourceAsStream("Rules.templ")), "CAcert Web of Trust"); baseTemplate = new Template(Gigi.class.getResource("Gigi.templ")); rootMenu = new Menu("Main"); diff --git a/src/org/cacert/gigi/dbObjects/Group.java b/src/org/cacert/gigi/dbObjects/Group.java index bdce278d..69f8e40b 100644 --- a/src/org/cacert/gigi/dbObjects/Group.java +++ b/src/org/cacert/gigi/dbObjects/Group.java @@ -2,6 +2,10 @@ package org.cacert.gigi.dbObjects; import java.util.HashMap; +import org.cacert.gigi.database.DatabaseConnection; +import org.cacert.gigi.database.GigiPreparedStatement; +import org.cacert.gigi.database.GigiResultSet; + public class Group { private static HashMap cache = new HashMap<>(); @@ -54,4 +58,20 @@ public class Group { public String getDatabaseName() { return dbName; } + + public User[] getMembers(int offset, int count) { + GigiPreparedStatement gps = DatabaseConnection.getInstance().prepare("SELECT user FROM user_groups WHERE permission=? AND deleted is NULL LIMIT ?,?"); + gps.setString(1, dbName); + gps.setInt(2, offset); + gps.setInt(3, count); + GigiResultSet grs = gps.executeQuery(); + grs.last(); + User[] users = new User[grs.getRow()]; + int i = 0; + grs.beforeFirst(); + while (grs.next()) { + users[i++] = User.getById(grs.getInt(1)); + } + return users; + } } diff --git a/src/org/cacert/gigi/pages/admin/TTPAdminPage.java b/src/org/cacert/gigi/pages/admin/TTPAdminPage.java new file mode 100644 index 00000000..0d0f438e --- /dev/null +++ b/src/org/cacert/gigi/pages/admin/TTPAdminPage.java @@ -0,0 +1,64 @@ +package org.cacert.gigi.pages.admin; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.cacert.gigi.dbObjects.Group; +import org.cacert.gigi.dbObjects.User; +import org.cacert.gigi.localisation.Language; +import org.cacert.gigi.output.template.IterableDataset; +import org.cacert.gigi.pages.Page; + +public class TTPAdminPage extends Page { + + public static final String PATH = "/admin/ttp"; + + private static final Group TTP_APPLICANT = Group.getByString("ttp-applicant"); + + public TTPAdminPage() { + super("TTP-Admin"); + } + + @Override + public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { + String path = req.getPathInfo(); + if (path != null && path.length() > PATH.length()) { + int id = Integer.parseInt(path.substring(1 + PATH.length())); + resp.getWriter().println("processing: " + id); // TODO + User u = User.getById(id); + if ( !u.isInGroup(TTP_APPLICANT)) { + return; + } + return; + } + final User[] users = TTP_APPLICANT.getMembers(0, 30); + HashMap vars = new HashMap<>(); + vars.put("users", new IterableDataset() { + + int i = 0; + + @Override + public boolean next(Language l, Map vars) { + if (i >= users.length) { + return false; + } + vars.put("id", Integer.toString(users[i].getId())); + vars.put("name", users[i].getName().toString()); + vars.put("email", users[i].getEmail()); + + i++; + return true; + } + }); + getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars); + } + + @Override + public boolean isPermitted(User u) { + return u != null && u.isInGroup(Group.getByString("ttp-assuer")); + } +} diff --git a/src/org/cacert/gigi/pages/admin/TTPAdminPage.templ b/src/org/cacert/gigi/pages/admin/TTPAdminPage.templ new file mode 100644 index 00000000..e80cea21 --- /dev/null +++ b/src/org/cacert/gigi/pages/admin/TTPAdminPage.templ @@ -0,0 +1,5 @@ + + + + +
Process
\ No newline at end of file -- 2.39.2