소스 검색

fix #1892 throw 401 status

Shinsuke Sugaya 6 년 전
부모
커밋
bdc7c1fded
1개의 변경된 파일7개의 추가작업 그리고 5개의 파일을 삭제
  1. 7 5
      src/main/java/org/codelibs/fess/api/es/EsApiManager.java

+ 7 - 5
src/main/java/org/codelibs/fess/api/es/EsApiManager.java

@@ -71,16 +71,18 @@ public class EsApiManager extends BaseApiManager {
     @Override
     public boolean matches(final HttpServletRequest request) {
         final String servletPath = request.getServletPath();
-        if (servletPath.startsWith(pathPrefix)) {
-            final RequestManager requestManager = ComponentUtil.getRequestManager();
-            return requestManager.findUserBean(FessUserBean.class).map(user -> user.hasRoles(acceptedRoles)).orElse(Boolean.FALSE);
-        }
-        return false;
+        return servletPath.startsWith(pathPrefix);
     }
 
     @Override
     public void process(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) throws IOException,
             ServletException {
+        final RequestManager requestManager = ComponentUtil.getRequestManager();
+        if (!requestManager.findUserBean(FessUserBean.class).map(user -> user.hasRoles(acceptedRoles)).orElse(Boolean.FALSE)) {
+            response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized access: " + request.getServletPath());
+            return;
+        }
+
         try {
             getSessionManager().getAttribute(Constants.ES_API_ACCESS_TOKEN, String.class).ifPresent(token -> {
                 final String servletPath = request.getServletPath();