From 9d5da858aec9c1032fa0cf6097a079aae5cff5c3 Mon Sep 17 00:00:00 2001 From: Abdul Qadir Date: Sat, 11 Nov 2023 01:41:24 +0500 Subject: [PATCH] Add handling for access token that enver expire (ex: GITHUB) --- .../domain/user/model/ConnectionAuthToken.java | 15 +++++++++++++-- .../filter/UserSessionPersistenceFilter.java | 3 +++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/user/model/ConnectionAuthToken.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/user/model/ConnectionAuthToken.java index fb0dc8325..7e16f0f1b 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/user/model/ConnectionAuthToken.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/user/model/ConnectionAuthToken.java @@ -30,11 +30,22 @@ public boolean isRefreshTokenExpired() { } public static ConnectionAuthToken of(AuthToken token) { + + Long accessTokenExpiry = 0L; + if(token.getExpireIn() != 0) { + accessTokenExpiry = System.currentTimeMillis() / 1000 + token.getExpireIn() - 60; + } + + Long refreshTokenExpiry = 0L; + if(token.getRefreshTokenExpireIn() != 0) { + refreshTokenExpiry = System.currentTimeMillis() / 1000 + token.getRefreshTokenExpireIn() - 60; + } + return ConnectionAuthToken.builder() .accessToken(token.getAccessToken()) - .expireAt(System.currentTimeMillis() / 1000 + token.getExpireIn() - 60) + .expireAt(accessTokenExpiry) .refreshToken(token.getRefreshToken()) - .refreshTokenExpireAt(System.currentTimeMillis() / 1000 + token.getRefreshTokenExpireIn() - 60) + .refreshTokenExpireAt(refreshTokenExpiry) .source(null) .build(); } diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/filter/UserSessionPersistenceFilter.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/filter/UserSessionPersistenceFilter.java index 77d28486f..a5f40d45f 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/filter/UserSessionPersistenceFilter.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/filter/UserSessionPersistenceFilter.java @@ -59,6 +59,9 @@ public Mono filter(@Nonnull ServerWebExchange exchange, WebFilterChain cha user.getConnections().forEach(connection -> { if(!connection.getAuthId().equals(DEFAULT_AUTH_CONFIG.getId())) { Instant next5Minutes = Instant.now().plusSeconds( 300 ); + if(connection.getAuthConnectionAuthToken().getExpireAt() == 0) { + return; + } boolean isAccessTokenExpiryNear = (connection.getAuthConnectionAuthToken().getExpireAt()*1000) <= next5Minutes.toEpochMilli(); if(isAccessTokenExpiryNear) { connection.getOrgIds().forEach(orgId -> {