From aa6d43e8b28ff73d69a920e9b3a7b284cfce00c3 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] Extract SessionManager from GitBlit singleton --- src/main/java/com/gitblit/EnforceAuthenticationFilter.java | 57 ++++++++++++++++++++++++++++++++------------------------- 1 files changed, 32 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/gitblit/EnforceAuthenticationFilter.java b/src/main/java/com/gitblit/EnforceAuthenticationFilter.java index ae91c32..48fc005 100644 --- a/src/main/java/com/gitblit/EnforceAuthenticationFilter.java +++ b/src/main/java/com/gitblit/EnforceAuthenticationFilter.java @@ -18,6 +18,8 @@ import java.io.IOException; import java.text.MessageFormat; +import javax.inject.Inject; +import javax.inject.Singleton; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; @@ -30,6 +32,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.gitblit.manager.IRuntimeManager; +import com.gitblit.manager.ISessionManager; import com.gitblit.models.UserModel; /** @@ -40,19 +44,31 @@ * @author Laurens Vrijnsen * */ +@Singleton public class EnforceAuthenticationFilter implements Filter { protected transient Logger logger = LoggerFactory.getLogger(getClass()); + + private final IStoredSettings settings; + + private final ISessionManager sessionManager; + + @Inject + public EnforceAuthenticationFilter( + IRuntimeManager runtimeManager, + ISessionManager sessionManager) { + + super(); + this.settings = runtimeManager.getSettings(); + this.sessionManager = sessionManager; + } /* * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */ @Override public void init(FilterConfig filterConfig) throws ServletException { - // nothing to be done - - } //init - + } /* * This does the actual filtering: is the user authenticated? If not, enforce HTTP authentication (401) @@ -62,32 +78,26 @@ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { - /* - * Determine whether to enforce the BASIC authentication: - */ - @SuppressWarnings("static-access") - Boolean mustForceAuth = GitBlit.self().getBoolean(Keys.web.authenticateViewPages, false) - && GitBlit.self().getBoolean(Keys.web.enforceHttpBasicAuthentication, false); + Boolean mustForceAuth = settings.getBoolean(Keys.web.authenticateViewPages, false) + && settings.getBoolean(Keys.web.enforceHttpBasicAuthentication, false); - HttpServletRequest HttpRequest = (HttpServletRequest)request; - HttpServletResponse HttpResponse = (HttpServletResponse)response; - UserModel user = GitBlit.self().authenticate(HttpRequest); + HttpServletRequest httpRequest = (HttpServletRequest) request; + HttpServletResponse httpResponse = (HttpServletResponse) response; + UserModel user = sessionManager.authenticate(httpRequest); if (mustForceAuth && (user == null)) { // not authenticated, enforce now: logger.debug(MessageFormat.format("EnforceAuthFilter: user not authenticated for URL {0}!", request.toString())); - @SuppressWarnings("static-access") - String CHALLENGE = MessageFormat.format("Basic realm=\"{0}\"", GitBlit.self().getString("web.siteName","")); - HttpResponse.setHeader("WWW-Authenticate", CHALLENGE); - HttpResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED); + String challenge = MessageFormat.format("Basic realm=\"{0}\"", settings.getString(Keys.web.siteName, "")); + httpResponse.setHeader("WWW-Authenticate", challenge); + httpResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED); return; } else { // user is authenticated, or don't care, continue handling - chain.doFilter( request, response ); - - } // authenticated - } // doFilter + chain.doFilter(request, response); + } + } /* @@ -95,8 +105,5 @@ */ @Override public void destroy() { - // Nothing to be done - - } // destroy - + } } -- Gitblit v1.9.1