From 9effe1630d97039b3e01cd9b58ed07e75be1d63c Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 25 Feb 2013 08:40:30 -0500 Subject: [PATCH] Merge pull request #75 from thefake/master --- src/com/gitblit/wicket/AuthorizationStrategy.java | 23 +++++++++++++---------- 1 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/com/gitblit/wicket/AuthorizationStrategy.java b/src/com/gitblit/wicket/AuthorizationStrategy.java index 42d2522..21bd1b7 100644 --- a/src/com/gitblit/wicket/AuthorizationStrategy.java +++ b/src/com/gitblit/wicket/AuthorizationStrategy.java @@ -16,13 +16,14 @@ package com.gitblit.wicket; import org.apache.wicket.Component; -import org.apache.wicket.RestartResponseAtInterceptPageException; +import org.apache.wicket.RestartResponseException; import org.apache.wicket.authorization.IUnauthorizedComponentInstantiationListener; import org.apache.wicket.authorization.strategies.page.AbstractPageAuthorizationStrategy; import com.gitblit.GitBlit; import com.gitblit.Keys; -import com.gitblit.wicket.models.UserModel; +import com.gitblit.models.UserModel; +import com.gitblit.wicket.pages.BasePage; import com.gitblit.wicket.pages.RepositoriesPage; public class AuthorizationStrategy extends AbstractPageAuthorizationStrategy implements @@ -34,6 +35,12 @@ @SuppressWarnings({ "unchecked", "rawtypes" }) @Override protected boolean isPageAuthorized(Class pageClass) { + if (RepositoriesPage.class.equals(pageClass)) { + // allow all requests to get to the RepositoriesPage with its inline + // authentication form + return true; + } + if (BasePage.class.isAssignableFrom(pageClass)) { boolean authenticateView = GitBlit.getBoolean(Keys.web.authenticateViewPages, true); boolean authenticateAdmin = GitBlit.getBoolean(Keys.web.authenticateAdminPages, true); @@ -42,17 +49,18 @@ GitBlitWebSession session = GitBlitWebSession.get(); if (authenticateView && !session.isLoggedIn()) { // authentication required + session.cacheRequest(pageClass); return false; } UserModel user = session.getUser(); - if (pageClass.isAnnotationPresent(AdminPage.class)) { + if (pageClass.isAnnotationPresent(RequiresAdminRole.class)) { // admin page if (allowAdmin) { if (authenticateAdmin) { // authenticate admin if (user != null) { - return user.canAdmin; + return user.canAdmin(); } return false; } else { @@ -71,12 +79,7 @@ @Override public void onUnauthorizedInstantiation(Component component) { if (component instanceof BasePage) { - GitBlitWebSession session = GitBlitWebSession.get(); - if (!session.isLoggedIn()) { - throw new RestartResponseAtInterceptPageException(LoginPage.class); - } else { - throw new RestartResponseAtInterceptPageException(RepositoriesPage.class); - } + throw new RestartResponseException(RepositoriesPage.class); } } } -- Gitblit v1.9.1