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