Skip to content

Commit 032d2e7

Browse files
Thomasrludomikula
Thomasr
authored andcommitted
#1088 fix refresh token issue
- update activeauthtoken when first login - only update accesstoken and expirein when refreshing - check if refresh token is empty
1 parent e7b44fd commit 032d2e7

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

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

+4-1
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,10 @@ public Mono<Boolean> bindEmail(User user, String email) {
210210
@Override
211211
public Mono<Boolean> addNewConnection(String userId, Connection connection) {
212212
return findById(userId)
213-
.doOnNext(user -> user.getConnections().add(connection))
213+
.doOnNext(user -> {
214+
user.getConnections().add(connection);
215+
user.setActiveAuthId(connection.getAuthId());
216+
})
214217
.flatMap(repository::save)
215218
.then(Mono.just(true));
216219
}

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/request/oauth2/request/AbstractOauth2Request.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@ public Mono<AuthUser> auth(AuthRequestContext authRequestContext) {
3939

4040
public Mono<AuthUser> refresh(String refreshToken) {
4141
return refreshAuthToken(refreshToken)
42-
.flatMap(authToken -> getAuthUser(authToken).doOnNext(authUser -> authUser.setAuthToken(authToken)))
42+
.flatMap(authToken -> getAuthUser(authToken).doOnNext(authUser -> {
43+
assert authUser.getAuthToken() != null;
44+
authUser.getAuthToken().setAccessToken(authToken.getAccessToken());
45+
authUser.getAuthToken().setExpireIn(authToken.getExpireIn());
46+
}))
4347
.onErrorResume(throwable -> {
4448
log.error("failed to refresh token: ", throwable);
4549
return deferredError(FAIL_TO_GET_OIDC_INFO, "FAIL_TO_GET_OIDC_INFO", throwable.getMessage());

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

+5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import jakarta.annotation.Nonnull;
44
import lombok.extern.slf4j.Slf4j;
5+
import org.apache.commons.lang.StringUtils;
56
import org.apache.commons.lang3.tuple.Triple;
67
import org.lowcoder.api.authentication.request.AuthRequest;
78
import org.lowcoder.api.authentication.request.AuthRequestFactory;
@@ -128,6 +129,10 @@ private Mono<User> refreshOauthToken(Triple<User, Connection, String> triple) {
128129
return Mono.just(user);
129130
}
130131
try {
132+
if (StringUtils.isEmpty(connection.getAuthConnectionAuthToken().getRefreshToken())) {
133+
log.error("Refresh token is empty");
134+
throw new Exception("Refresh token is empty");
135+
}
131136
AuthUser authUser = authRequest.refresh(connection.getAuthConnectionAuthToken().getRefreshToken()).block();
132137
authUser.setAuthContext(oAuth2RequestContext);
133138
authenticationApiService.updateConnection(authUser, user);

0 commit comments

Comments
 (0)