enable cors

This commit is contained in:
Benjamin Gamard 2018-01-24 15:39:27 +01:00
parent d0646f12e6
commit 9ba49f35ff
5 changed files with 70 additions and 19 deletions

View File

@ -1,17 +1,5 @@
package com.sismics.docs.core.dao.jpa;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import com.google.common.base.Joiner;
import com.sismics.docs.core.constant.AuditLogType;
import com.sismics.docs.core.dao.jpa.criteria.TagCriteria;
@ -24,6 +12,11 @@ import com.sismics.docs.core.util.jpa.QueryUtil;
import com.sismics.docs.core.util.jpa.SortCriteria;
import com.sismics.util.context.ThreadLocalContext;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import java.util.*;
/**
* Tag DAO.
*
@ -204,7 +197,7 @@ public class TagDao {
}
if (criteria.getNameLike() != null) {
criteriaList.add("t.TAG_NAME_C like :nameLike");
parameterMap.put("nameLike", "%" + criteria.getNameLike() + "%");
parameterMap.put("nameLike", criteria.getNameLike() + "%");
}
criteriaList.add("t.TAG_DELETEDATE_D is null");

View File

@ -28,7 +28,7 @@ public class EnvironmentUtil {
* @return Running under Microsoft Windows
*/
public static boolean isWindows() {
return OS.indexOf("win") >= 0;
return OS.contains("win");
}
/**
@ -37,7 +37,7 @@ public class EnvironmentUtil {
* @return Running under Mac OS
*/
public static boolean isMacOs() {
return OS.indexOf("mac") >= 0;
return OS.contains("mac");
}
/**
@ -46,7 +46,7 @@ public class EnvironmentUtil {
* @return Running under UNIX
*/
public static boolean isUnix() {
return OS.indexOf("nix") >= 0 || OS.indexOf("nux") >= 0 || OS.indexOf("aix") > 0;
return OS.contains("nix") || OS.contains("nux") || OS.contains("aix");
}
/**

View File

@ -0,0 +1,47 @@
package com.sismics.util.filter;
import com.sismics.util.EnvironmentUtil;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Filter used to handle CORS requests.
*
* @author bgamard
*/
public class CorsFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) {
// NOP
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
if (EnvironmentUtil.isDevMode() && request.getHeader("origin") != null) {
// Add CORS in dev mode
response.addHeader("Access-Control-Allow-Origin", request.getHeader("origin"));
response.addHeader("Access-Control-Allow-Credentials", "true");
response.addHeader("Access-Control-Max-Age", "3600");
response.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
}
if ("OPTIONS".equals(request.getMethod())) {
// Handle preflight request
response.getWriter().print("{ \"status\": \"ok\" }");
} else {
filterChain.doFilter(req, res);
}
}
@Override
public void destroy() {
// NOP
}
}

View File

@ -32,7 +32,7 @@ public class RequestContextFilter implements Filter {
private static final Logger log = LoggerFactory.getLogger(RequestContextFilter.class);
@Override
public void init(FilterConfig filterConfig) throws ServletException {
public void init(FilterConfig filterConfig) {
// Initialize the app directory
if (!filterConfig.getServletContext().getServerInfo().startsWith("Grizzly")) {
EnvironmentUtil.setWebappContext(true);

View File

@ -12,7 +12,19 @@
<display-name>ImageIO service provider loader/unloader</display-name>
<listener-class>com.twelvemonkeys.servlet.image.IIOProviderContextListener</listener-class>
</listener>
<!-- This filter handles CORS -->
<filter>
<filter-name>corsFilter</filter-name>
<filter-class>com.sismics.util.filter.CorsFilter</filter-class>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>corsFilter</filter-name>
<url-pattern>/api/*</url-pattern>
</filter-mapping>
<!-- This filter is used to process a couple things in the request context -->
<filter>
<filter-name>requestContextFilter</filter-name>
@ -23,7 +35,6 @@
<filter-mapping>
<filter-name>requestContextFilter</filter-name>
<url-pattern>/api/*</url-pattern>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<!-- These filters are used to secure URLs -->