2 * ============LICENSE_START==========================================
4 * ===================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ===================================================================
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
13 * http://www.apache.org/licenses/LICENSE-2.0
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.
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
26 * https://creativecommons.org/licenses/by/4.0/
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.
34 * ============LICENSE_END============================================
38 package org.onap.portalapp.portal.interceptor;
40 import javax.servlet.http.HttpServletRequest;
41 import javax.servlet.http.HttpServletResponse;
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;
57 public class SessionTimeoutInterceptor extends HandlerInterceptorAdapter {
58 EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SessionTimeoutInterceptor.class);
61 private LoginStrategy loginStrategy;
63 public SessionTimeoutInterceptor() {
66 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
69 if (!isHandlerMethod(handler))
72 HandlerMethod method = (HandlerMethod) handler;
74 if (!isFusionController(method.getBean()))
77 if (method.getBean() instanceof FusionBaseController) {
78 FusionBaseController controller = (FusionBaseController) method.getBean();
80 if (!controller.isAccessible()) {
82 EPUser user = EPUserUtils.getUserSession(request);
84 throw new SessionExpiredException();
86 if (request.getRequestURI().indexOf("logout.htm") > -1) {
87 CollaborateList.delUserName(user.getOrgUserId());
88 throw new SessionExpiredException();
90 resetSessionMaxIdleTimeOut(request);
91 CollaborateList.addUserName(user.getOrgUserId());
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));
98 } catch (Exception e) {
99 logger.error(EELFLoggerDelegate.errorLogger, "preHandle failed", e);
110 private void resetSessionMaxIdleTimeOut(HttpServletRequest request) {
111 SessionCookieUtil.resetSessionMaxIdleTimeOut(request);
115 private boolean isFusionController(Object controller) {
116 if (controller instanceof FusionBaseController)
121 private boolean isHandlerMethod(Object controller) {
122 if (controller instanceof HandlerMethod)