2 * ================================================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ================================================================================
20 package org.openecomp.portalapp.portal.interceptor;
22 import javax.servlet.http.HttpServletRequest;
23 import javax.servlet.http.HttpServletResponse;
25 import org.openecomp.portalapp.authentication.LoginStrategy;
26 import org.openecomp.portalapp.portal.domain.EPUser;
27 import org.openecomp.portalapp.portal.utils.EcompPortalUtils;
28 import org.openecomp.portalapp.util.EPUserUtils;
29 import org.openecomp.portalapp.util.SessionCookieUtil;
30 import org.openecomp.portalsdk.core.controller.FusionBaseController;
31 import org.openecomp.portalsdk.core.domain.support.CollaborateList;
32 import org.openecomp.portalsdk.core.exception.SessionExpiredException;
33 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
34 import org.springframework.beans.factory.annotation.Autowired;
35 import org.springframework.web.method.HandlerMethod;
36 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
38 public class SessionTimeoutInterceptor extends HandlerInterceptorAdapter {
39 EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SessionTimeoutInterceptor.class);
42 private LoginStrategy loginStrategy;
44 public SessionTimeoutInterceptor() {
47 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
50 if (!isHandlerMethod(handler))
53 HandlerMethod method = (HandlerMethod) handler;
55 if (!isFusionController(method.getBean()))
58 FusionBaseController controller = (FusionBaseController) method.getBean();
60 if (!controller.isAccessible()) {
62 EPUser user = EPUserUtils.getUserSession(request);
64 if (request.getRequestURI().indexOf("logout.htm") > -1) {
65 CollaborateList.delUserName(user.getOrgUserId());
66 throw new SessionExpiredException();
68 resetSessionMaxIdleTimeOut(request);
69 CollaborateList.addUserName(user.getOrgUserId());
71 } catch (Exception see) {
72 logger.error(EELFLoggerDelegate.errorLogger, EcompPortalUtils.getStackTrace(see));
73 return loginStrategy.login(request, response);
81 private void resetSessionMaxIdleTimeOut(HttpServletRequest request) {
82 SessionCookieUtil.resetSessionMaxIdleTimeOut(request);
86 private boolean isFusionController(Object controller) {
87 if (controller instanceof FusionBaseController)
92 private boolean isHandlerMethod(Object controller) {
93 if (controller instanceof HandlerMethod)