]> WPIA git - gigi.git/commitdiff
ADD: Abstract permission check
authorJanis Streib <janis@dogcraft.de>
Sat, 23 Aug 2014 09:29:32 +0000 (11:29 +0200)
committerJanis Streib <janis@dogcraft.de>
Sat, 23 Aug 2014 09:31:08 +0000 (11:31 +0200)
src/org/cacert/gigi/Gigi.java
src/org/cacert/gigi/PermissionCheckable.java [new file with mode: 0644]
src/org/cacert/gigi/pages/Page.java

index 8900cfc8df5328aef6154bc3dd6d43c4586899b7..20a2b1ca3e72d7ab323a90cad3df42ca095182a4 100644 (file)
@@ -25,10 +25,10 @@ import org.cacert.gigi.pages.MainPage;
 import org.cacert.gigi.pages.Page;
 import org.cacert.gigi.pages.TestSecure;
 import org.cacert.gigi.pages.Verify;
-import org.cacert.gigi.pages.account.ChangePasswordPage;
-import org.cacert.gigi.pages.account.DomainOverview;
 import org.cacert.gigi.pages.account.CertificateAdd;
 import org.cacert.gigi.pages.account.Certificates;
+import org.cacert.gigi.pages.account.ChangePasswordPage;
+import org.cacert.gigi.pages.account.DomainOverview;
 import org.cacert.gigi.pages.account.MailOverview;
 import org.cacert.gigi.pages.account.MyDetails;
 import org.cacert.gigi.pages.error.PageNotFound;
@@ -95,7 +95,7 @@ public class Gigi extends HttpServlet {
         final Page p = getPage(req.getPathInfo());
         if (p != null) {
 
-            if (p.needsLogin() && hs.getAttribute("loggedin") == null) {
+            if ( !p.isPermitted(LoginPage.getUser(req)) && hs.getAttribute("loggedin") == null) {
                 String request = req.getPathInfo();
                 request = request.split("\\?")[0];
                 hs.setAttribute(LoginPage.LOGIN_RETURNPATH, request);
diff --git a/src/org/cacert/gigi/PermissionCheckable.java b/src/org/cacert/gigi/PermissionCheckable.java
new file mode 100644 (file)
index 0000000..a40c5ac
--- /dev/null
@@ -0,0 +1,8 @@
+package org.cacert.gigi;
+
+
+public interface PermissionCheckable {
+
+    public boolean isPermitted(User u);
+
+}
index 540969f3f2ede26eec5edf32aa8afa5860178391..54d7d45d72e32b22be1b15dfecd8980bb63ad624 100644 (file)
@@ -7,6 +7,7 @@ import javax.servlet.ServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.cacert.gigi.PermissionCheckable;
 import org.cacert.gigi.User;
 import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.output.template.Template;
@@ -15,7 +16,7 @@ import org.cacert.gigi.output.template.Template;
  * This class encapsulates a sub page of Gigi. A template residing nearby this
  * class with name &lt;className&gt;.templ will be loaded automatically.
  */
-public abstract class Page {
+public abstract class Page implements PermissionCheckable {
 
     private String title;
 
@@ -115,4 +116,9 @@ public abstract class Page {
         return LoginPage.getUser(req);
     }
 
+    @Override
+    public boolean isPermitted(User u) {
+        return !needsLogin() || u != null;
+    }
+
 }