Removed MDC from four modules
[sdc.git] / openecomp-be / lib / openecomp-item-permissions-lib / openecomp-item-permissions-core / src / main / java / org / openecomp / sdc / itempermissions / servlet / PermissionsFilter.java
1 /*
2  * Copyright © 2016-2017 European Support Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.openecomp.sdc.itempermissions.servlet;
18
19 import org.openecomp.sdc.itempermissions.PermissionsServices;
20 import org.openecomp.sdc.itempermissions.PermissionsServicesFactory;
21
22 import javax.servlet.Filter;
23 import javax.servlet.FilterChain;
24 import javax.servlet.FilterConfig;
25 import javax.servlet.ServletException;
26 import javax.servlet.ServletRequest;
27 import javax.servlet.ServletResponse;
28 import javax.servlet.http.HttpServletRequest;
29 import javax.servlet.http.HttpServletResponse;
30 import java.io.IOException;
31
32 /**
33  * Created by ayalaben on 6/27/2017.
34  */
35 public class PermissionsFilter implements Filter {
36
37   private final PermissionsServices permissionsServices;
38   private static final String IRRELEVANT_REQUEST = "Irrelevant_Request";
39   private static final String EDIT_ITEM = "Edit_Item";
40
41   public PermissionsFilter() {
42     this.permissionsServices = PermissionsServicesFactory.getInstance().createInterface();
43   }
44
45   @Override
46   public void init(FilterConfig filterConfig) {
47     // required by servlet API
48   }
49
50   @Override
51   public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
52                        FilterChain filterChain) throws IOException, ServletException {
53
54     if ((servletRequest instanceof HttpServletRequest) &&
55       isIrrelevant((HttpServletRequest) servletRequest, servletResponse)) {
56         return;
57     }
58
59     filterChain.doFilter(servletRequest, servletResponse);
60   }
61
62   private boolean isIrrelevant(HttpServletRequest servletRequest, ServletResponse servletResponse) throws IOException {
63
64
65     String method = servletRequest.getMethod();
66     if (method.equals("POST") || method.equals("PUT")) {
67
68       String userId = servletRequest.getHeader("USER_ID");
69       String itemId = parseItemIdFromPath(servletRequest.getPathInfo());
70
71       if (!itemId.equals(IRRELEVANT_REQUEST) && !permissionsServices.isAllowed(itemId,userId,EDIT_ITEM)) {
72           ((HttpServletResponse) servletResponse).setStatus(HttpServletResponse.SC_FORBIDDEN);
73           servletResponse.getWriter().print("Permissions Error. The user does not have " +
74               "permission to perform" +
75               " this action.");
76           return true;
77         }
78     }
79
80     return false;
81   }
82
83   private String parseItemIdFromPath(String pathInfo) {
84     String[] tokens = pathInfo.split("/");
85     if (tokens.length < 4) {
86       return IRRELEVANT_REQUEST;
87     } else {
88       return tokens[3];
89     }
90   }
91
92   @Override
93   public void destroy() {
94     // required by serlvet API
95   }
96 }