From b94965e87929c6b4e42f9a2078dc0d910cc2637d Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 09 May 2012 07:59:00 -0400
Subject: [PATCH] Merge pull request #17 from peterloron/master

---
 src/com/gitblit/SyndicationFilter.java |   58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/src/com/gitblit/SyndicationFilter.java b/src/com/gitblit/SyndicationFilter.java
index 68f383b..7e2561b 100644
--- a/src/com/gitblit/SyndicationFilter.java
+++ b/src/com/gitblit/SyndicationFilter.java
@@ -19,26 +19,76 @@
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.models.UserModel;
 
+/**
+ * The SyndicationFilter is an AccessRestrictionFilter which ensures that feed
+ * requests for view-restricted repositories have proper authentication
+ * credentials and are authorized for the requested feed.
+ * 
+ * @author James Moger
+ * 
+ */
 public class SyndicationFilter extends AccessRestrictionFilter {
 
+	/**
+	 * Extract the repository name from the url.
+	 * 
+	 * @param url
+	 * @return repository name
+	 */
 	@Override
 	protected String extractRepositoryName(String url) {
+		if (url.indexOf('?') > -1) {
+			return url.substring(0, url.indexOf('?'));
+		}
 		return url;
 	}
 
+	/**
+	 * Analyze the url and returns the action of the request.
+	 * 
+	 * @param url
+	 * @return action of the request
+	 */
 	@Override
-	protected String getUrlRequestType(String url) {
-		return "RESTRICTED";
+	protected String getUrlRequestAction(String url) {
+		return "VIEW";
 	}
 
+	/**
+	 * Determine if the action may be executed on the repository.
+	 * 
+	 * @param repository
+	 * @param action
+	 * @return true if the action may be performed
+	 */
+	@Override
+	protected boolean isActionAllowed(RepositoryModel repository, String action) {
+		return true;
+	}
+	
+	/**
+	 * Determine if the repository requires authentication.
+	 * 
+	 * @param repository
+	 * @return true if authentication required
+	 */
 	@Override
 	protected boolean requiresAuthentication(RepositoryModel repository) {
 		return repository.accessRestriction.atLeast(AccessRestrictionType.VIEW);
 	}
 
+	/**
+	 * Determine if the user can access the repository and perform the specified
+	 * action.
+	 * 
+	 * @param repository
+	 * @param user
+	 * @param action
+	 * @return true if user may execute the action on the repository
+	 */
 	@Override
-	protected boolean canAccess(RepositoryModel repository, UserModel user, String restrictedURL) {
-		return user.canAccessRepository(repository.name);
+	protected boolean canAccess(RepositoryModel repository, UserModel user, String action) {
+		return user.canAccessRepository(repository);
 	}
 
 }

--
Gitblit v1.9.1