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