add: 403-page, custom 404-message
authorFelix Dörre <felix@dogcraft.de>
Mon, 10 Nov 2014 17:19:57 +0000 (18:19 +0100)
committerJanis Streib <janis@dogcraft.de>
Wed, 31 Dec 2014 01:36:07 +0000 (02:36 +0100)
src/org/cacert/gigi/Gigi.java
src/org/cacert/gigi/Launcher.java
src/org/cacert/gigi/pages/admin/TTPAdminPage.java
src/org/cacert/gigi/pages/error/AccessDenied.java [new file with mode: 0644]
src/org/cacert/gigi/pages/error/AccessDenied.templ [new file with mode: 0644]
src/org/cacert/gigi/pages/error/PageNotFound.java
src/org/cacert/gigi/pages/error/PageNotFound.templ

index ff1b9693cfa3c423c7f0f057a5230d7c2460445f..692eb3ed597feb437ad034f19287660e7b40ff73 100644 (file)
@@ -42,6 +42,7 @@ 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.AccessDenied;
 import org.cacert.gigi.pages.error.PageNotFound;
 import org.cacert.gigi.pages.main.RegisterPage;
 import org.cacert.gigi.pages.orga.CreateOrgPage;
@@ -95,6 +96,7 @@ public class Gigi extends HttpServlet {
     @Override
     public void init() throws ServletException {
         if ( !firstInstanceInited) {
+            putPage("/denied", new AccessDenied(), null);
             putPage("/error", new PageNotFound(), null);
             putPage("/login", new LoginPage("Password Login"), "CAcert.org");
             getMenu("CAcert.org").addItem(new SimpleMenuItem("https://" + ServerConstants.getSecureHostNamePort() + "/login", "Certificate Login") {
index 0490d1b1f1bf20609c494b5a2863e30e018d3b83..7448151a3bbc3bbef960438d943ad4ae5d100c2e 100644 (file)
@@ -205,6 +205,7 @@ public class Launcher {
         servlet.addServlet(webAppServlet, "/*");
         ErrorPageErrorHandler epeh = new ErrorPageErrorHandler();
         epeh.addErrorPage(404, "/error");
+        epeh.addErrorPage(403, "/denied");
         servlet.setErrorHandler(epeh);
 
         HandlerList hl = new HandlerList();
index 9c7d48b6ae3660411bd2dfd4a7a9a99423acffc7..cc9a536d8d2970d7330658a0811d7bff617ff125 100644 (file)
@@ -14,6 +14,7 @@ import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.output.Form;
 import org.cacert.gigi.output.template.IterableDataset;
 import org.cacert.gigi.pages.Page;
+import org.cacert.gigi.pages.error.PageNotFound;
 
 public class TTPAdminPage extends Page {
 
@@ -40,10 +41,11 @@ public class TTPAdminPage extends Page {
     @Override
     public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
         String path = req.getPathInfo();
-        if (path != null && path.length() > PATH.length()) {
+        if (path != null && path.length() > PATH.length() + 1) {
             int id = Integer.parseInt(path.substring(1 + PATH.length()));
             User u = User.getById(id);
-            if ( !u.isInGroup(TTP_APPLICANT)) {
+            if (u == null || !u.isInGroup(TTP_APPLICANT)) {
+                req.setAttribute(PageNotFound.MESSAGE_ATTRIBUTE, "The TTP-request is not available anymore.");
                 resp.sendError(404);
                 return;
             }
diff --git a/src/org/cacert/gigi/pages/error/AccessDenied.java b/src/org/cacert/gigi/pages/error/AccessDenied.java
new file mode 100644 (file)
index 0000000..60c48bf
--- /dev/null
@@ -0,0 +1,26 @@
+package org.cacert.gigi.pages.error;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.cacert.gigi.pages.Page;
+
+public class AccessDenied extends Page {
+
+    public AccessDenied() {
+        super("Access denied");
+    }
+
+    @Override
+    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+        getDefaultTemplate().output(resp.getWriter(), Page.getLanguage(req), null);
+    }
+
+    @Override
+    public boolean needsLogin() {
+        return false;
+    }
+
+}
diff --git a/src/org/cacert/gigi/pages/error/AccessDenied.templ b/src/org/cacert/gigi/pages/error/AccessDenied.templ
new file mode 100644 (file)
index 0000000..69069ca
--- /dev/null
@@ -0,0 +1 @@
+<p><?=_The access to this page has been denied to you.?></p>
index e6ba0640626b528f7b19327b39d3de1e918a8ce2..ffc107f598e67ed7bca65bb7fb26e67219a2e581 100644 (file)
@@ -1,6 +1,7 @@
 package org.cacert.gigi.pages.error;
 
 import java.io.IOException;
+import java.util.HashMap;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -9,13 +10,21 @@ import org.cacert.gigi.pages.Page;
 
 public class PageNotFound extends Page {
 
+    public static final String MESSAGE_ATTRIBUTE = "message-Str";
+
     public PageNotFound() {
         super("File not found!");
     }
 
     @Override
     public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
-        getDefaultTemplate().output(resp.getWriter(), Page.getLanguage(req), null);
+        HashMap<String, Object> vars = new HashMap<>();
+        Object customMessage = req.getAttribute(MESSAGE_ATTRIBUTE);
+        if (customMessage == null) {
+            customMessage = getLanguage(req).getTranslation("Due to recent site changes bookmarks may no longer be valid, please update your bookmarks.");
+        }
+        vars.put("message", customMessage);
+        getDefaultTemplate().output(resp.getWriter(), Page.getLanguage(req), vars);
     }
 
     @Override
index 5ecd88670a207a1277a9b80468145721ecd95503..1c1b95c13f7d139df298153fb63caca90fa24c7f 100644 (file)
@@ -1 +1 @@
-<p><?=_Due to recent site changes bookmarks may no longer be valid, please update your bookmarks.?></p>
+<p><?=$message?></p>