From 23c416f30f4a1e69e76b70d71f6a9a7da4a020f1 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 10 Apr 2014 18:58:09 -0400 Subject: [PATCH] Hook-up comprensive command cleanup (destroy) --- src/main/java/com/gitblit/servlet/GitFilter.java | 57 ++++++++++++++++++++++++++++++--------------------------- 1 files changed, 30 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/gitblit/servlet/GitFilter.java b/src/main/java/com/gitblit/servlet/GitFilter.java index f39d68f..f9c062d 100644 --- a/src/main/java/com/gitblit/servlet/GitFilter.java +++ b/src/main/java/com/gitblit/servlet/GitFilter.java @@ -17,22 +17,19 @@ import java.text.MessageFormat; -import javax.inject.Inject; -import javax.inject.Singleton; +import javax.servlet.http.HttpServletRequest; -import com.gitblit.Constants; +import com.gitblit.Constants.AccessRestrictionType; +import com.gitblit.Constants.AuthorizationControl; import com.gitblit.GitBlitException; import com.gitblit.IStoredSettings; import com.gitblit.Keys; -import com.gitblit.Constants.AccessRestrictionType; -import com.gitblit.Constants.AuthorizationControl; -import com.gitblit.Keys.git; -import com.gitblit.manager.IRepositoryManager; -import com.gitblit.manager.IRuntimeManager; -import com.gitblit.manager.ISessionManager; +import com.gitblit.manager.IFederationManager; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; import com.gitblit.utils.StringUtils; + +import dagger.ObjectGraph; /** * The GitFilter is an AccessRestrictionFilter which ensures that Git client @@ -42,7 +39,6 @@ * @author James Moger * */ -@Singleton public class GitFilter extends AccessRestrictionFilter { protected static final String gitReceivePack = "/git-receive-pack"; @@ -52,16 +48,15 @@ protected static final String[] suffixes = { gitReceivePack, gitUploadPack, "/info/refs", "/HEAD", "/objects" }; - private final IStoredSettings settings; + private IStoredSettings settings; - @Inject - public GitFilter( - IRuntimeManager runtimeManager, - ISessionManager sessionManager, - IRepositoryManager repositoryManager) { + private IFederationManager federationManager; - super(runtimeManager, sessionManager, repositoryManager); - this.settings = runtimeManager.getSettings(); + @Override + protected void inject(ObjectGraph dagger) { + super.inject(dagger); + this.settings = dagger.get(IStoredSettings.class); + this.federationManager = dagger.get(IFederationManager.class); } /** @@ -115,6 +110,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; } /** @@ -181,15 +191,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