diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java index 4014cbf2..9ae9fe08 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/AuthInterceptor.java @@ -6,11 +6,14 @@ import java.io.IOException; import io.jsonwebtoken.Claims; import it.integry.integrywmsnative.core.authentication.JwtUtils; +import it.integry.integrywmsnative.core.exception.UnauthorizedAccessException; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.gest.login.rest.RefreshRESTConsumer; import okhttp3.Interceptor; +import okhttp3.Protocol; import okhttp3.Response; +import okhttp3.ResponseBody; public class AuthInterceptor implements Interceptor { @@ -30,7 +33,7 @@ public class AuthInterceptor implements Interceptor { var accessToken = SettingsManager.i().getUserSession().getAccessToken(); var accessTokenExpiryDate = SettingsManager.i().getUserSession().getAccessTokenExpiryDate(); - if (accessToken != null && (accessTokenExpiryDate == null || UtilityDate.getNowTime().isAfter(accessTokenExpiryDate))) { + if (accessToken != null && (accessTokenExpiryDate == null || UtilityDate.getNowTime().isAfter(accessTokenExpiryDate.minusSeconds(20)))) { // Make the token refresh request try { @@ -45,6 +48,15 @@ public class AuthInterceptor implements Interceptor { .setRefreshTokenExpiryDate(response.getExpiryDate()); SettingsManager.update(); + } catch (UnauthorizedAccessException uae) { + // Crea una risposta 401 manualmente + return new Response.Builder() + .request(originalRequest) + .protocol(Protocol.HTTP_1_1) + .code(401) + .message("Unauthorized") + .body(ResponseBody.create(new byte[0], null)) + .build(); } catch (Exception e) { return chain.proceed(originalRequest); }