From: Janis Streib Date: Sat, 23 Aug 2014 09:29:32 +0000 (+0200) Subject: ADD: Abstract permission check X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=9f1f1f1618da6b3361952f50555db5c891ed7e73 ADD: Abstract permission check --- diff --git a/src/org/cacert/gigi/Gigi.java b/src/org/cacert/gigi/Gigi.java index 8900cfc8..20a2b1ca 100644 --- a/src/org/cacert/gigi/Gigi.java +++ b/src/org/cacert/gigi/Gigi.java @@ -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 index 00000000..a40c5acb --- /dev/null +++ b/src/org/cacert/gigi/PermissionCheckable.java @@ -0,0 +1,8 @@ +package org.cacert.gigi; + + +public interface PermissionCheckable { + + public boolean isPermitted(User u); + +} diff --git a/src/org/cacert/gigi/pages/Page.java b/src/org/cacert/gigi/pages/Page.java index 540969f3..54d7d45d 100644 --- a/src/org/cacert/gigi/pages/Page.java +++ b/src/org/cacert/gigi/pages/Page.java @@ -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 <className>.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; + } + }