From 2e141ff31dedaa6dfefc4af47eda803d8dbb3eff Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 01 Sep 2015 08:49:02 -0400
Subject: [PATCH] Fix #909: Add missing SLFJ dependencies in Manager build
---
src/main/java/com/gitblit/servlet/GitFilter.java | 44 +++++++++++++++++++++++++++++++-------------
1 files changed, 31 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/gitblit/servlet/GitFilter.java b/src/main/java/com/gitblit/servlet/GitFilter.java
index 402636e..b29fdb6 100644
--- a/src/main/java/com/gitblit/servlet/GitFilter.java
+++ b/src/main/java/com/gitblit/servlet/GitFilter.java
@@ -17,7 +17,9 @@
import java.text.MessageFormat;
-import javax.inject.Inject;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import javax.servlet.http.HttpServletRequest;
import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.Constants.AuthorizationControl;
@@ -25,6 +27,7 @@
import com.gitblit.IStoredSettings;
import com.gitblit.Keys;
import com.gitblit.manager.IAuthenticationManager;
+import com.gitblit.manager.IFederationManager;
import com.gitblit.manager.IRepositoryManager;
import com.gitblit.manager.IRuntimeManager;
import com.gitblit.models.RepositoryModel;
@@ -39,6 +42,7 @@
* @author James Moger
*
*/
+@Singleton
public class GitFilter extends AccessRestrictionFilter {
protected static final String gitReceivePack = "/git-receive-pack";
@@ -48,16 +52,22 @@
protected static final String[] suffixes = { gitReceivePack, gitUploadPack, "/info/refs", "/HEAD",
"/objects" };
- private final IStoredSettings settings;
+ private IStoredSettings settings;
+
+ private IFederationManager federationManager;
@Inject
public GitFilter(
+ IStoredSettings settings,
IRuntimeManager runtimeManager,
IAuthenticationManager authenticationManager,
- IRepositoryManager repositoryManager) {
+ IRepositoryManager repositoryManager,
+ IFederationManager federationManager) {
super(runtimeManager, authenticationManager, repositoryManager);
- this.settings = runtimeManager.getSettings();
+
+ this.settings = settings;
+ this.federationManager = federationManager;
}
/**
@@ -111,6 +121,21 @@
}
}
return null;
+ }
+
+ /**
+ * Returns the user making the request, if the user has authenticated.
+ *
+ * @param httpRequest
+ * @return user
+ */
+ @Override
+ protected UserModel getUser(HttpServletRequest httpRequest) {
+ UserModel user = authenticationManager.authenticate(httpRequest, requiresClientCertificate());
+ if (user == null) {
+ user = federationManager.authenticate(httpRequest);
+ }
+ return user;
}
/**
@@ -177,15 +202,8 @@
return false;
}
if (action.equals(gitReceivePack)) {
- // Push request
- if (user.canPush(repository)) {
- return true;
- } else {
- // user is unauthorized to push to this repository
- logger.warn(MessageFormat.format("user {0} is not authorized to push to {1}",
- user.username, repository));
- return false;
- }
+ // push permissions are enforced in the receive pack
+ return true;
} else if (action.equals(gitUploadPack)) {
// Clone request
if (user.canClone(repository)) {
--
Gitblit v1.9.1