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;
}