package com.skyline.electricity.interceptor; import com.skyline.electricity.controller.*; import org.springframework.beans.factory.annotation.*; import org.apache.commons.lang3.*; import javax.servlet.http.*; import org.springframework.web.servlet.*; import java.util.*; import java.io.*; import org.apache.commons.codec.binary.Base64; public class LoginInterceptor implements HandlerInterceptor { @Autowired private RemoteController remoteController; public boolean preHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler) throws Exception { final HttpSession session = request.getSession(); final IAMUtils iamUtils = new IAMUtils(); final String code = request.getParameter("code"); final String iamAccessToken = request.getParameter("iamAccessToken"); if (code != null && iamAccessToken != null) { Object userId = null; try { userId = iamUtils.getUserInfoFromIam(iamAccessToken); } catch (Exception e) { e.printStackTrace(); } if (userId != null && !"".equals(userId)) { final Cookie token = new Cookie("iam-access-token", iamAccessToken); token.setMaxAge(-1); token.setPath("/"); response.addCookie(token); return true; } return false; } else { if (null == code) { return "" != this.getToken(request); } String tokenOfCode = null; try { tokenOfCode = iamUtils.getTokenByCode(code); } catch (Exception e) { e.printStackTrace(); } if (StringUtils.isNotBlank((CharSequence)tokenOfCode)) { final Cookie token = new Cookie("iam-access-token", tokenOfCode); token.setMaxAge(-1); token.setPath("/"); response.addCookie(token); return true; } return false; } } public void postHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler, final ModelAndView modelAndView) throws Exception { } public void afterCompletion(final HttpServletRequest request, final HttpServletResponse response, final Object handler, final Exception ex) throws Exception { } private String getToken(final HttpServletRequest request) { final Cookie[] cookies = request.getCookies(); String cookieValue = null; for (final Cookie cookie : cookies) { if (cookie.getName().equals("iam-access-token")) {} cookieValue = cookie.getValue(); } return cookieValue; } /* private void redirectUrl(final String path, final HttpServletResponse httpResponse) { final BASE64Encoder base64Encoder = new BASE64Encoder(); final Map info = (Map)this.remoteController.getConfigInfo(); try { final String serverUrl = info.get("server_url"); final String loginSuccessUrl = serverUrl + path; final String encoderRedirectUrl = base64Encoder.encode(loginSuccessUrl.getBytes()); final String iamUrl = info.get("iam_url"); httpResponse.sendRedirect(iamUrl + encoderRedirectUrl + "&exitFlag=true"); } catch (IOException e) { e.printStackTrace(); } }*/ }