public boolean preHandle()

in seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/interceptor/AuthenticationInterceptor.java [55:104]


    public boolean preHandle(
            HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        if (request.getMethod().equals(OPTIONS)) {
            response.setHeader("Access-Control-Allow-Origin", "*");
            response.setHeader("Access-Control-Allow-Headers", "*");
            response.setHeader("Access-Control-Allow-Methods", "*");
            response.setHeader("Access-Control-Allow-Credentials", "true");
            response.setHeader("Access-Control-Max-Age", "3600");
            return true;
        }

        long currentTimestamp = System.currentTimeMillis();
        final String token = request.getHeader(TOKEN);
        if (StringUtils.isBlank(token)) {
            log.info("user does not exist");
            response.setStatus(HttpStatus.UNAUTHORIZED_401);
            return false;
        }
        final Map<String, Object> map = jwtUtils.parseToken(token);
        final Integer userId = (Integer) map.get(USER_ID);
        if (Objects.isNull(userId)) {
            log.info("userId does not exist");
            response.setStatus(HttpStatus.UNAUTHORIZED_401);
            return false;
        }
        final UserLoginLog userLoginLog = userDaoImpl.getLastLoginLog(userId);
        if (Objects.isNull(userLoginLog) || !userLoginLog.getTokenStatus()) {
            log.info("userLoginLog does not exist");
            response.setStatus(HttpStatus.UNAUTHORIZED_401);
            return false;
        }

        final Integer expireDate = (Integer) map.get(EXPIRATION);
        if (Objects.isNull(expireDate) || currentTimestamp - (long) expireDate * 1000 > 0) {
            log.info("user token has expired");
            response.setStatus(HttpStatus.UNAUTHORIZED_401);
            return false;
        }

        map.forEach(request::setAttribute);
        User user = new User();
        user.setUsername((String) map.get("name"));
        user.setId((Integer) map.get("id"));
        //        user.setStatus((Byte) map.get("status"));
        //        user.setType((Byte) map.get("type"));
        request.setAttribute(Constants.SESSION_USER, user);
        request.setAttribute("userId", userId);
        return true;
    }