Fix AuthInterceptor

This commit is contained in:
Giuseppe Scorrano 2024-05-07 18:35:51 +02:00
parent c5d09b0d8b
commit 91bca90e5d

View File

@ -24,35 +24,40 @@ public class AuthInterceptor implements Interceptor {
@Override
public Response intercept(@NonNull Chain chain) throws IOException {
var originalRequest = chain.request();
var accessToken = SettingsManager.i().getUserSession().getAccessToken();
var accessTokenExpiryDate = SettingsManager.i().getUserSession().getAccessTokenExpiryDate();
if(accessToken != null && (accessTokenExpiryDate == null || UtilityDate.getNowTime().isAfter(accessTokenExpiryDate))) {
if(SettingsManager.i().getUserSession() != null) {
// Make the token refresh request
try {
var response = refreshRESTConsumer.makeSynchronousRefreshTokenRequest();
var accessToken = SettingsManager.i().getUserSession().getAccessToken();
var accessTokenExpiryDate = SettingsManager.i().getUserSession().getAccessTokenExpiryDate();
JWT jwt = new JWT(response.getAccessToken());
if (accessToken != null && (accessTokenExpiryDate == null || UtilityDate.getNowTime().isAfter(accessTokenExpiryDate))) {
SettingsManager.i().getUserSession()
.setAccessToken(response.getAccessToken())
.setAccessTokenExpiryDate(UtilityDate.toLocalDateTime(jwt.getExpiresAt()))
.setRefreshToken(response.getRefreshToken())
.setRefreshTokenExpiryDate(response.getExpiryDate());
// Make the token refresh request
try {
var response = refreshRESTConsumer.makeSynchronousRefreshTokenRequest();
SettingsManager.update();
} catch (Exception e) {
throw new RuntimeException(e);
}
JWT jwt = new JWT(response.getAccessToken());
SettingsManager.i().getUserSession()
.setAccessToken(response.getAccessToken())
.setAccessTokenExpiryDate(UtilityDate.toLocalDateTime(jwt.getExpiresAt()))
.setRefreshToken(response.getRefreshToken())
.setRefreshTokenExpiryDate(response.getExpiryDate());
SettingsManager.update();
} catch (Exception e) {
throw new RuntimeException(e);
}
// Add the access token to the request header
var authorizedRequest = originalRequest.newBuilder()
.header("Authorization", "Bearer " + SettingsManager.i().getUserSession().getAccessToken())
.build();
// Add the access token to the request header
var authorizedRequest = originalRequest.newBuilder()
.header("Authorization", "Bearer " + SettingsManager.i().getUserSession().getAccessToken())
.build();
return chain.proceed(authorizedRequest);
return chain.proceed(authorizedRequest);
} else
return chain.proceed(originalRequest);
} else
return chain.proceed(originalRequest);
}