From a1ea877042b93949ef244b96e8affd65cc3f89c1 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 01 Jun 2011 20:19:51 -0400
Subject: [PATCH] Readme markdown on summary page per-repository.

---
 src/com/gitblit/wicket/AuthorizationStrategy.java |   58 +++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 51 insertions(+), 7 deletions(-)

diff --git a/src/com/gitblit/wicket/AuthorizationStrategy.java b/src/com/gitblit/wicket/AuthorizationStrategy.java
index 0a9d652..b6b745b 100644
--- a/src/com/gitblit/wicket/AuthorizationStrategy.java
+++ b/src/com/gitblit/wicket/AuthorizationStrategy.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2011 gitblit.com.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package com.gitblit.wicket;
 
 import org.apache.wicket.Component;
@@ -5,9 +20,15 @@
 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.models.UserModel;
+import com.gitblit.wicket.pages.BasePage;
+import com.gitblit.wicket.pages.LoginPage;
 import com.gitblit.wicket.pages.RepositoriesPage;
 
-public class AuthorizationStrategy extends AbstractPageAuthorizationStrategy implements IUnauthorizedComponentInstantiationListener {
+public class AuthorizationStrategy extends AbstractPageAuthorizationStrategy implements
+		IUnauthorizedComponentInstantiationListener {
 
 	public AuthorizationStrategy() {
 	}
@@ -16,12 +37,34 @@
 	@Override
 	protected boolean isPageAuthorized(Class pageClass) {
 		if (BasePage.class.isAssignableFrom(pageClass)) {
+			boolean authenticateView = GitBlit.getBoolean(Keys.web.authenticateViewPages, true);
+			boolean authenticateAdmin = GitBlit.getBoolean(Keys.web.authenticateAdminPages, true);
+			boolean allowAdmin = GitBlit.getBoolean(Keys.web.allowAdministration, true);
+
 			GitBlitWebSession session = GitBlitWebSession.get();
-			if (!session.isLoggedIn())
+			if (authenticateView && !session.isLoggedIn()) {
+				// authentication required
 				return false;
-			User user = session.getUser();
-			if (pageClass.isAnnotationPresent(AdminPage.class)) {
-				return user.canAdmin();
+			}
+
+			UserModel user = session.getUser();
+			if (pageClass.isAnnotationPresent(RequiresAdminRole.class)) {
+				// admin page
+				if (allowAdmin) {
+					if (authenticateAdmin) {
+						// authenticate admin
+						if (user != null) {
+							return user.canAdmin;
+						}
+						return false;
+					} else {
+						// no admin authentication required
+						return true;
+					}
+				} else {
+					// admin prohibited
+					return false;
+				}
 			}
 		}
 		return true;
@@ -31,10 +74,11 @@
 	public void onUnauthorizedInstantiation(Component component) {
 		if (component instanceof BasePage) {
 			GitBlitWebSession session = GitBlitWebSession.get();
-			if (!session.isLoggedIn())
+			if (!session.isLoggedIn()) {
 				throw new RestartResponseAtInterceptPageException(LoginPage.class);
-			else
+			} else {
 				throw new RestartResponseAtInterceptPageException(RepositoriesPage.class);
+			}
 		}
 	}
 }

--
Gitblit v1.9.1