Skip to content

Commit c5e0c86

Browse files
ludomikulaaq-ikhwa-techFalkWolsky
authored
Add handling for access token that enver expire (ex: GITHUB) (#492)
Co-authored-by: Abdul Qadir <[email protected]> Co-authored-by: Falk Wolsky <[email protected]>
1 parent bd0ce74 commit c5e0c86

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/user/model/ConnectionAuthToken.java

+13-2
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,22 @@ public boolean isRefreshTokenExpired() {
3030
}
3131

3232
public static ConnectionAuthToken of(AuthToken token) {
33+
34+
Long accessTokenExpiry = 0L;
35+
if(token.getExpireIn() != 0) {
36+
accessTokenExpiry = System.currentTimeMillis() / 1000 + token.getExpireIn() - 60;
37+
}
38+
39+
Long refreshTokenExpiry = 0L;
40+
if(token.getRefreshTokenExpireIn() != 0) {
41+
refreshTokenExpiry = System.currentTimeMillis() / 1000 + token.getRefreshTokenExpireIn() - 60;
42+
}
43+
3344
return ConnectionAuthToken.builder()
3445
.accessToken(token.getAccessToken())
35-
.expireAt(System.currentTimeMillis() / 1000 + token.getExpireIn() - 60)
46+
.expireAt(accessTokenExpiry)
3647
.refreshToken(token.getRefreshToken())
37-
.refreshTokenExpireAt(System.currentTimeMillis() / 1000 + token.getRefreshTokenExpireIn() - 60)
48+
.refreshTokenExpireAt(refreshTokenExpiry)
3849
.source(null)
3950
.build();
4051
}

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/framework/filter/UserSessionPersistenceFilter.java

+3
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ public Mono<Void> filter(@Nonnull ServerWebExchange exchange, WebFilterChain cha
5959
user.getConnections().forEach(connection -> {
6060
if(!connection.getAuthId().equals(DEFAULT_AUTH_CONFIG.getId())) {
6161
Instant next5Minutes = Instant.now().plusSeconds( 300 );
62+
if(connection.getAuthConnectionAuthToken().getExpireAt() == 0) {
63+
return;
64+
}
6265
boolean isAccessTokenExpiryNear = (connection.getAuthConnectionAuthToken().getExpireAt()*1000) <= next5Minutes.toEpochMilli();
6366
if(isAccessTokenExpiryNear) {
6467
connection.getOrgIds().forEach(orgId -> {

0 commit comments

Comments
 (0)