Use constant for rest api path

This commit is contained in:
René Pfeuffer
2018-09-12 12:24:57 +02:00
parent f47c5ef16f
commit 9aa9b77922
5 changed files with 25 additions and 16 deletions

View File

@@ -3,6 +3,9 @@ package sonia.scm.api.v2.resources;
import java.net.URI;
public interface ScmPathInfo {
String REST_API_PATH = "/api/rest";
URI getApiRestUri();
default URI getRootUri() {

View File

@@ -31,6 +31,8 @@
package sonia.scm.filter;
import static sonia.scm.api.v2.resources.ScmPathInfo.REST_API_PATH;
/**
* Useful constants for filter implementations.
*
@@ -44,26 +46,26 @@ public final class Filters
public static final String PATTERN_ALL = "/*";
/** Field description */
public static final String PATTERN_CONFIG = "/api/rest/config*";
public static final String PATTERN_CONFIG = REST_API_PATH + "/config*";
/** Field description */
public static final String PATTERN_DEBUG = "/debug.html";
/** Field description */
public static final String PATTERN_GROUPS = "/api/rest/groups*";
public static final String PATTERN_GROUPS = REST_API_PATH + "/groups*";
/** Field description */
public static final String PATTERN_PLUGINS = "/api/rest/plugins*";
public static final String PATTERN_PLUGINS = REST_API_PATH + "/plugins*";
/** Field description */
public static final String PATTERN_RESOURCE_REGEX =
"^/(?:resources|api|plugins|index)[\\./].*(?:html|\\.css|\\.js|\\.xml|\\.json|\\.txt)";
/** Field description */
public static final String PATTERN_RESTAPI = "/api/rest/*";
public static final String PATTERN_RESTAPI = REST_API_PATH + "/*";
/** Field description */
public static final String PATTERN_USERS = "/api/rest/users*";
public static final String PATTERN_USERS = REST_API_PATH + "/users*";
/** authentication priority */
public static final int PRIORITY_AUTHENTICATION = 5000;

View File

@@ -119,6 +119,8 @@ import sonia.scm.web.security.DefaultAdministrationContext;
import javax.net.ssl.SSLContext;
import javax.servlet.ServletContext;
import static sonia.scm.api.v2.resources.ScmPathInfo.REST_API_PATH;
/**
*
* @author Sebastian Sdorra
@@ -128,14 +130,14 @@ public class ScmServletModule extends ServletModule
/** Field description */
public static final String[] PATTERN_ADMIN = new String[] {
"/api/rest/groups*",
"/api/rest/users*", "/api/rest/plguins*" };
REST_API_PATH + "/groups*",
REST_API_PATH + "/users*", REST_API_PATH + "/plguins*" };
/** Field description */
public static final String PATTERN_ALL = "/*";
/** Field description */
public static final String PATTERN_CONFIG = "/api/rest/config*";
public static final String PATTERN_CONFIG = REST_API_PATH + "/config*";
/** Field description */
public static final String PATTERN_DEBUG = "/debug.html";

View File

@@ -37,10 +37,8 @@ package sonia.scm.filter;
import com.google.common.annotations.VisibleForTesting;
import com.google.inject.Inject;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import sonia.scm.Priority;
import sonia.scm.SCMContext;
import sonia.scm.config.ScmConfiguration;
@@ -48,14 +46,15 @@ import sonia.scm.security.SecurityRequests;
import sonia.scm.web.filter.HttpFilter;
import sonia.scm.web.filter.SecurityHttpServletRequestWrapper;
//~--- JDK imports ------------------------------------------------------------
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import static sonia.scm.api.v2.resources.ScmPathInfo.REST_API_PATH;
//~--- JDK imports ------------------------------------------------------------
/**
*
@@ -63,7 +62,8 @@ import javax.servlet.http.HttpServletResponse;
*/
@Priority(Filters.PRIORITY_AUTHORIZATION)
// TODO find a better way for unprotected resources
@WebElement(value = "/api/rest/(?!v2/ui).*", regex = true)
@WebElement(value = REST_API_PATH + "" +
"/(?!v2/ui).*", regex = true)
public class SecurityFilter extends HttpFilter
{

View File

@@ -3,12 +3,14 @@ package sonia.scm.security;
import javax.servlet.http.HttpServletRequest;
import java.util.regex.Pattern;
import static sonia.scm.api.v2.resources.ScmPathInfo.REST_API_PATH;
/**
* Created by masuewer on 04.07.18.
*/
public final class SecurityRequests {
private static final Pattern URI_LOGIN_PATTERN = Pattern.compile("/api/rest(?:/v2)?/auth/access_token");
private static final Pattern URI_LOGIN_PATTERN = Pattern.compile(REST_API_PATH + "(?:/v2)?/auth/access_token");
private SecurityRequests() {}