Merge with 2.0.0-m3

This commit is contained in:
René Pfeuffer
2018-12-20 10:56:00 +01:00
3 changed files with 51 additions and 5 deletions

View File

@@ -112,9 +112,7 @@ import sonia.scm.util.ScmConfigurationUtil;
import sonia.scm.web.UserAgentParser;
import sonia.scm.web.cgi.CGIExecutorFactory;
import sonia.scm.web.cgi.DefaultCGIExecutorFactory;
import sonia.scm.web.filter.AuthenticationFilter;
import sonia.scm.web.filter.LoggingFilter;
import sonia.scm.web.protocol.HttpProtocolServlet;
import sonia.scm.web.security.AdministrationContext;
import sonia.scm.web.security.DefaultAdministrationContext;
@@ -315,8 +313,6 @@ public class ScmServletModule extends ServletModule
bind(TemplateEngineFactory.class);
bind(ObjectMapper.class).toProvider(ObjectMapperProvider.class);
filter(HttpProtocolServlet.PATTERN).through(AuthenticationFilter.class);
// bind events
// bind(LastModifiedUpdateListener.class);

View File

@@ -0,0 +1,50 @@
package sonia.scm.web.filter;
import sonia.scm.Priority;
import sonia.scm.PushStateDispatcher;
import sonia.scm.config.ScmConfiguration;
import sonia.scm.filter.Filters;
import sonia.scm.filter.WebElement;
import sonia.scm.util.HttpUtil;
import sonia.scm.web.UserAgent;
import sonia.scm.web.UserAgentParser;
import sonia.scm.web.WebTokenGenerator;
import sonia.scm.web.protocol.HttpProtocolServlet;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Set;
import static sonia.scm.util.HttpUtil.AUTHENTICATION_REALM;
import static sonia.scm.util.HttpUtil.HEADER_WWW_AUTHENTICATE;
@Priority(Filters.PRIORITY_AUTHENTICATION)
@WebElement(value = HttpProtocolServlet.PATTERN)
public class HttpProtocolServletAuthenticationFilter extends AuthenticationFilter {
private final PushStateDispatcher dispatcher;
private final UserAgentParser userAgentParser;
@Inject
public HttpProtocolServletAuthenticationFilter(
ScmConfiguration configuration,
Set<WebTokenGenerator> tokenGenerators,
PushStateDispatcher dispatcher,
UserAgentParser userAgentParser) {
super(configuration, tokenGenerators);
this.dispatcher = dispatcher;
this.userAgentParser = userAgentParser;
}
@Override
protected void sendUnauthorizedError(HttpServletRequest request, HttpServletResponse response) throws IOException {
UserAgent userAgent = userAgentParser.parse(request);
if (userAgent.isBrowser()) {
dispatcher.dispatch(request, response, request.getRequestURI());
} else {
HttpUtil.sendUnauthorized(request, response);
}
}
}