treat HEAD, OPTIONS and TRACE as mercurial read requests not only GET, see issue #859

This commit is contained in:
Sebastian Sdorra
2016-09-30 22:23:14 +02:00
parent c4111ec73f
commit 264a1af634
2 changed files with 99 additions and 13 deletions

View File

@@ -35,6 +35,7 @@ package sonia.scm.web;
//~--- non-JDK imports --------------------------------------------------------
import com.google.common.collect.ImmutableSet;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -44,21 +45,26 @@ import sonia.scm.web.filter.ProviderPermissionFilter;
//~--- JDK imports ------------------------------------------------------------
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
/**
*
* Permission filter for mercurial repositories.
*
* @author Sebastian Sdorra
*/
@Singleton
public class HgPermissionFilter extends ProviderPermissionFilter
{
private static final Set<String> READ_METHODS = ImmutableSet.of("GET", "HEAD", "OPTIONS", "TRACE");
/**
* Constructs ...
* Constructs a new instance.
*
* @param configuration
* @param repositoryProvider
* @param configuration scm configuration
* @param repositoryProvider repository provider
*/
@Inject
public HgPermissionFilter(ScmConfiguration configuration,
@@ -69,17 +75,9 @@ public class HgPermissionFilter extends ProviderPermissionFilter
//~--- get methods ----------------------------------------------------------
/**
* Method description
*
*
* @param request
*
* @return
*/
@Override
protected boolean isWriteRequest(HttpServletRequest request)
{
return !request.getMethod().equalsIgnoreCase("GET");
return !READ_METHODS.contains(request.getMethod());
}
}