From 06fa257080ab8de7986ad5debbf317eddf5608e7 Mon Sep 17 00:00:00 2001 From: Alex Lewis <alex.lewis001@gmail.com> Date: Tue, 10 Dec 2013 11:41:36 -0500 Subject: [PATCH] issue-350: Fixes issue when an apostrophe is present in a User's name --- src/main/java/com/gitblit/servlet/GitFilter.java | 42 ++++++++++++++++++++++++++++++++---------- 1 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/gitblit/servlet/GitFilter.java b/src/main/java/com/gitblit/servlet/GitFilter.java index f39d68f..15facbe 100644 --- a/src/main/java/com/gitblit/servlet/GitFilter.java +++ b/src/main/java/com/gitblit/servlet/GitFilter.java @@ -18,18 +18,18 @@ 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.IAuthenticationManager; +import com.gitblit.manager.IFederationManager; import com.gitblit.manager.IRepositoryManager; import com.gitblit.manager.IRuntimeManager; -import com.gitblit.manager.ISessionManager; +import com.gitblit.manager.IUserManager; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; import com.gitblit.utils.StringUtils; @@ -42,7 +42,6 @@ * @author James Moger * */ -@Singleton public class GitFilter extends AccessRestrictionFilter { protected static final String gitReceivePack = "/git-receive-pack"; @@ -54,14 +53,22 @@ private final IStoredSettings settings; + private final IUserManager userManager; + + private final IFederationManager federationManager; + @Inject public GitFilter( IRuntimeManager runtimeManager, - ISessionManager sessionManager, - IRepositoryManager repositoryManager) { + IUserManager userManager, + IAuthenticationManager authenticationManager, + IRepositoryManager repositoryManager, + IFederationManager federationManager) { - super(runtimeManager, sessionManager, repositoryManager); + super(runtimeManager, authenticationManager, repositoryManager); this.settings = runtimeManager.getSettings(); + this.userManager = userManager; + this.federationManager = federationManager; } /** @@ -118,6 +125,21 @@ } /** + * 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; + } + + /** * Determine if a non-existing repository can be created using this filter. * * @return true if the server allows repository creation on-push -- Gitblit v1.9.1