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;
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);
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;
* 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;
return LoginPage.getUser(req);
}
+ @Override
+ public boolean isPermitted(User u) {
+ return !needsLogin() || u != null;
+ }
+
}