From 7cd88ddbd93b115aeda76b87b1c99f9afa4aaaef Mon Sep 17 00:00:00 2001
From: Lukasz Jader <ljaderdev@gmail.com>
Date: Sat, 14 Jul 2012 08:01:51 -0400
Subject: [PATCH] Fix some typos in polish translation

---
 src/com/gitblit/GitFilter.java |   44 +++++++++++++++++++++++++++++++++++++-------
 1 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/src/com/gitblit/GitFilter.java b/src/com/gitblit/GitFilter.java
index 3011413..4ae5b6c 100644
--- a/src/com/gitblit/GitFilter.java
+++ b/src/com/gitblit/GitFilter.java
@@ -61,7 +61,7 @@
 	 * Analyze the url and returns the action of the request. Return values are
 	 * either "/git-receive-pack" or "/git-upload-pack".
 	 * 
-	 * @param url
+	 * @param serverUrl
 	 * @return action of the request
 	 */
 	@Override
@@ -75,20 +75,49 @@
 				return gitReceivePack;
 			} else if (suffix.contains("?service=git-upload-pack")) {
 				return gitUploadPack;
+			} else {
+				return gitUploadPack;
 			}
 		}
 		return null;
+	}
+	
+	/**
+	 * Determine if the repository can receive pushes.
+	 * 
+	 * @param repository
+	 * @param action
+	 * @return true if the action may be performed
+	 */
+	@Override
+	protected boolean isActionAllowed(RepositoryModel repository, String action) {
+		if (action.equals(gitReceivePack)) {
+			// Push request
+			if (!repository.isBare) {
+				logger.warn("Gitblit does not allow pushes to repositories with a working copy");
+				return false;
+			}
+		}
+		return true;
 	}
 
 	/**
 	 * Determine if the repository requires authentication.
 	 * 
 	 * @param repository
+	 * @param action
 	 * @return true if authentication required
 	 */
 	@Override
-	protected boolean requiresAuthentication(RepositoryModel repository) {
-		return repository.accessRestriction.atLeast(AccessRestrictionType.PUSH);
+	protected boolean requiresAuthentication(RepositoryModel repository, String action) {
+		if (gitUploadPack.equals(action)) {
+			// send to client
+			return repository.accessRestriction.atLeast(AccessRestrictionType.CLONE);	
+		} else if (gitReceivePack.equals(action)) {
+			// receive from client
+			return repository.accessRestriction.atLeast(AccessRestrictionType.PUSH);
+		}
+		return false;
 	}
 
 	/**
@@ -105,12 +134,13 @@
 		if (!GitBlit.getBoolean(Keys.git.enableGitServlet, true)) {
 			// Git Servlet disabled
 			return false;
-		}
-		if (repository.isFrozen || repository.accessRestriction.atLeast(AccessRestrictionType.PUSH)) {
-			boolean authorizedUser = user.canAccessRepository(repository.name);
+		}		
+		boolean readOnly = repository.isFrozen;	
+		if (readOnly || repository.accessRestriction.atLeast(AccessRestrictionType.PUSH)) {
+			boolean authorizedUser = user.canAccessRepository(repository);
 			if (action.equals(gitReceivePack)) {
 				// Push request
-				if (!repository.isFrozen && authorizedUser) {
+				if (!readOnly && authorizedUser) {
 					// clone-restricted or push-authorized
 					return true;
 				} else {

--
Gitblit v1.9.1