Merge "NotificationCleanupConfig.java - Fixed sonar issue"
[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 import org.onap.portalsdk.core.util.SystemProperties;
56 import org.onap.portalapp.portal.utils.EPSystemProperties;
57
58 public class SessionTimeoutInterceptor extends HandlerInterceptorAdapter {
59         EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SessionTimeoutInterceptor.class);
60
61         @Autowired
62         private LoginStrategy loginStrategy;
63
64         public SessionTimeoutInterceptor() {
65         }
66
67         public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
68                         throws Exception {
69
70                 if (!isHandlerMethod(handler))
71                         return false;
72
73                 HandlerMethod method = (HandlerMethod) handler;
74
75                 if (!isFusionController(method.getBean()))
76                         return false;
77
78                 if (method.getBean() instanceof FusionBaseController) {
79                         FusionBaseController controller = (FusionBaseController) method.getBean();
80
81                         if (!controller.isAccessible()) {
82                                 try {
83                                         EPUser user = EPUserUtils.getUserSession(request);
84                                         if (user == null) {
85                                                 throw new SessionExpiredException();
86                                         }
87                                         if (request.getRequestURI().indexOf("logout.htm") > -1) {
88                                                 CollaborateList.delUserName(user.getOrgUserId());
89                                                 throw new SessionExpiredException();
90                                         } else {
91                                                 resetSessionMaxIdleTimeOut(request);
92                                                 CollaborateList.addUserName(user.getOrgUserId());
93                                         }
94                                 } catch (SessionExpiredException e) {
95                                         String message=e.getMessage();
96                                         logger.error(EELFLoggerDelegate.errorLogger,message, e);
97                                         response.sendRedirect(SystemProperties.getProperty(EPSystemProperties.LOGIN_URL_NO_RET_VAL));
98                                         return false;
99                                 } catch (Exception e) {
100                                         logger.error(EELFLoggerDelegate.errorLogger, "preHandle failed", e);
101                                         return false;
102                                 }
103
104                         }
105
106                 }
107
108                 return true;
109         }
110
111         private void resetSessionMaxIdleTimeOut(HttpServletRequest request) {
112                 SessionCookieUtil.resetSessionMaxIdleTimeOut(request);
113
114         }
115
116         private boolean isFusionController(Object controller) {
117                 if (controller instanceof FusionBaseController)
118                         return true;
119                 return false;
120         }
121
122         private boolean isHandlerMethod(Object controller) {
123                 if (controller instanceof HandlerMethod)
124                         return true;
125                 return false;
126         }
127 }