Replace ecomp references
[portal.git] / ecomp-portal-BE-os / src / main / java / org / onap / portalapp / portal / interceptor / SessionTimeoutInterceptor.java
1 /*-
2  * ============LICENSE_START==========================================
3  * ONAP Portal
4  * ===================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ===================================================================
7  *
8  * Unless otherwise specified, all software contained herein is licensed
9  * under the Apache License, Version 2.0 (the "License");
10  * you may not use this software except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *             http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  * Unless otherwise specified, all documentation contained herein is licensed
22  * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
23  * you may not use this documentation except in compliance with the License.
24  * You may obtain a copy of the License at
25  *
26  *             https://creativecommons.org/licenses/by/4.0/
27  *
28  * Unless required by applicable law or agreed to in writing, documentation
29  * distributed under the License is distributed on an "AS IS" BASIS,
30  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31  * See the License for the specific language governing permissions and
32  * limitations under the License.
33  *
34  * ============LICENSE_END============================================
35  *
36  * 
37  */
38 package org.onap.portalapp.portal.interceptor;
39
40 import javax.servlet.http.HttpServletRequest;
41 import javax.servlet.http.HttpServletResponse;
42
43 import org.onap.portalapp.authentication.LoginStrategy;
44 import org.onap.portalapp.portal.domain.EPUser;
45 import org.onap.portalapp.portal.utils.EcompPortalUtils;
46 import org.onap.portalapp.util.EPUserUtils;
47 import org.onap.portalapp.util.SessionCookieUtil;
48 import org.onap.portalsdk.core.controller.FusionBaseController;
49 import org.onap.portalsdk.core.domain.support.CollaborateList;
50 import org.onap.portalsdk.core.exception.SessionExpiredException;
51 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
52 import org.springframework.beans.factory.annotation.Autowired;
53 import org.springframework.web.method.HandlerMethod;
54 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
55
56 public class SessionTimeoutInterceptor extends HandlerInterceptorAdapter {
57         EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SessionTimeoutInterceptor.class);
58
59         @Autowired
60         private LoginStrategy loginStrategy;
61
62         public SessionTimeoutInterceptor() {
63         }
64
65         public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
66                         throws Exception {
67
68                 if (!isHandlerMethod(handler))
69                         return false;
70
71                 HandlerMethod method = (HandlerMethod) handler;
72
73                 if (!isFusionController(method.getBean()))
74                         return false;
75
76                 if (method.getBean() instanceof FusionBaseController) {
77                         FusionBaseController controller = (FusionBaseController) method.getBean();
78
79                         if (!controller.isAccessible()) {
80                                 try {
81                                         EPUser user = EPUserUtils.getUserSession(request);
82
83                                         if (request.getRequestURI().indexOf("logout.htm") > -1) {
84                                                 CollaborateList.delUserName(user.getOrgUserId());
85                                                 throw new SessionExpiredException();
86                                         } else {
87                                                 resetSessionMaxIdleTimeOut(request);
88                                                 CollaborateList.addUserName(user.getOrgUserId());
89                                         }
90                                 } catch (Exception e) {
91                                         logger.error(EELFLoggerDelegate.errorLogger, "preHandle failed", e);
92                                         return false;
93                                 }
94
95                         }
96
97                 }
98
99                 return true;
100         }
101
102         private void resetSessionMaxIdleTimeOut(HttpServletRequest request) {
103                 SessionCookieUtil.resetSessionMaxIdleTimeOut(request);
104
105         }
106
107         private boolean isFusionController(Object controller) {
108                 if (controller instanceof FusionBaseController)
109                         return true;
110                 return false;
111         }
112
113         private boolean isHandlerMethod(Object controller) {
114                 if (controller instanceof HandlerMethod)
115                         return true;
116                 return false;
117         }
118 }