From 23e08cdfd5f61e06f584c7fce4e765dd8b6e6643 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 29 Nov 2013 11:05:51 -0500 Subject: [PATCH] Refactor managers and authentication for federation --- src/main/java/com/gitblit/servlet/GitFilter.java | 28 +++++++++++++++++++++++++++- 1 files changed, 27 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/gitblit/servlet/GitFilter.java b/src/main/java/com/gitblit/servlet/GitFilter.java index 402636e..15facbe 100644 --- a/src/main/java/com/gitblit/servlet/GitFilter.java +++ b/src/main/java/com/gitblit/servlet/GitFilter.java @@ -18,6 +18,7 @@ import java.text.MessageFormat; import javax.inject.Inject; +import javax.servlet.http.HttpServletRequest; import com.gitblit.Constants.AccessRestrictionType; import com.gitblit.Constants.AuthorizationControl; @@ -25,8 +26,10 @@ 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.manager.IUserManager; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; import com.gitblit.utils.StringUtils; @@ -50,14 +53,22 @@ private final IStoredSettings settings; + private final IUserManager userManager; + + private final IFederationManager federationManager; + @Inject public GitFilter( IRuntimeManager runtimeManager, + IUserManager userManager, IAuthenticationManager authenticationManager, - IRepositoryManager repositoryManager) { + IRepositoryManager repositoryManager, + IFederationManager federationManager) { super(runtimeManager, authenticationManager, repositoryManager); this.settings = runtimeManager.getSettings(); + this.userManager = userManager; + this.federationManager = federationManager; } /** @@ -114,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