From cacf8bff097fbb66a7be1bfe267b5da2605145f8 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 29 Nov 2013 11:05:46 -0500 Subject: [PATCH] Use Dagger to inject managers into all filters and servlets --- src/main/java/com/gitblit/AuthenticationFilter.java | 33 ++++++++++++++++++++------------- 1 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/gitblit/AuthenticationFilter.java b/src/main/java/com/gitblit/AuthenticationFilter.java index eb6e95b..96d880f 100644 --- a/src/main/java/com/gitblit/AuthenticationFilter.java +++ b/src/main/java/com/gitblit/AuthenticationFilter.java @@ -28,23 +28,26 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.gitblit.manager.ISessionManager; import com.gitblit.models.UserModel; +import com.gitblit.utils.DeepCopier; import com.gitblit.utils.StringUtils; /** * The AuthenticationFilter is a servlet filter that preprocesses requests that * match its url pattern definition in the web.xml file. - * + * * http://en.wikipedia.org/wiki/Basic_access_authentication - * + * * @author James Moger - * + * */ public abstract class AuthenticationFilter implements Filter { @@ -54,20 +57,26 @@ protected transient Logger logger = LoggerFactory.getLogger(getClass()); + protected final ISessionManager sessionManager; + + protected AuthenticationFilter(ISessionManager sessionManager) { + this.sessionManager = sessionManager; + } + /** * doFilter does the actual work of preprocessing the request to ensure that * the user may proceed. - * + * * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, * javax.servlet.ServletResponse, javax.servlet.FilterChain) */ @Override public abstract void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException; - + /** * Allow the filter to require a client certificate to continue processing. - * + * * @return true, if a client certificate is required */ protected boolean requiresClientCertificate() { @@ -76,7 +85,7 @@ /** * Returns the full relative url of the request. - * + * * @param httpRequest * @return url */ @@ -93,19 +102,18 @@ /** * Returns the user making the request, if the user has authenticated. - * + * * @param httpRequest * @return user */ protected UserModel getUser(HttpServletRequest httpRequest) { - UserModel user = GitBlit.self().authenticate(httpRequest, requiresClientCertificate()); + UserModel user = sessionManager.authenticate(httpRequest, requiresClientCertificate()); return user; } /** * Taken from Jetty's LoginAuthenticator.renewSessionOnAuthentication() */ - @SuppressWarnings("unchecked") protected void newSession(HttpServletRequest request, HttpServletResponse response) { HttpSession oldSession = request.getSession(false); if (oldSession != null && oldSession.getAttribute(SESSION_SECURED) == null) { @@ -145,14 +153,13 @@ /** * Wraps a standard HttpServletRequest and overrides user principal methods. */ - public static class AuthenticatedRequest extends ServletRequestWrapper { + public static class AuthenticatedRequest extends HttpServletRequestWrapper { private UserModel user; public AuthenticatedRequest(HttpServletRequest req) { super(req); - user = new UserModel("anonymous"); - user.isAuthenticated = false; + user = DeepCopier.copy(UserModel.ANONYMOUS); } UserModel getUser() { -- Gitblit v1.9.1