From 052b4ae5c5eb1e68c1cbab6f1bffd1f1e8d9004b Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 4 Jul 2023 08:43:22 +0700 Subject: [PATCH] TF-1974 Check `refreshToken` is not empty when calling `appAuth.token()` (cherry picked from commit 4d06516a91d0c8c9ecf66275abe5f825309c4bba) --- .../email/domain/usecases/download_attachments_interactor.dart | 3 ++- .../login/data/network/config/authorization_interceptors.dart | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/features/email/domain/usecases/download_attachments_interactor.dart b/lib/features/email/domain/usecases/download_attachments_interactor.dart index dbc9ad641..e20056d7d 100644 --- a/lib/features/email/domain/usecases/download_attachments_interactor.dart +++ b/lib/features/email/domain/usecases/download_attachments_interactor.dart @@ -72,7 +72,8 @@ class DownloadAttachmentsInteractor { } } catch (exception) { log('DownloadAttachmentsInteractor::execute(): $exception'); - if (exception is DownloadAttachmentHasTokenExpiredException) { + if (exception is DownloadAttachmentHasTokenExpiredException && + exception.refreshToken.isNotEmpty) { yield* _retryDownloadAttachments( accountId, baseDownloadUrl, diff --git a/lib/features/login/data/network/config/authorization_interceptors.dart b/lib/features/login/data/network/config/authorization_interceptors.dart index e7f0a60c1..702d2fd2b 100644 --- a/lib/features/login/data/network/config/authorization_interceptors.dart +++ b/lib/features/login/data/network/config/authorization_interceptors.dart @@ -79,6 +79,7 @@ class AuthorizationInterceptors extends InterceptorsWrapper { log('AuthorizationInterceptors::onError(): $err'); if (_isTokenExpired() && err.response?.statusCode == 401 && + _isRefreshTokenNotEmpty() && _isAuthenticationOidcValid()) { try { final newToken = await _authenticationClient.refreshingTokensOIDC( @@ -139,6 +140,8 @@ class AuthorizationInterceptors extends InterceptorsWrapper { return false; } + bool _isRefreshTokenNotEmpty() => _token != null && _token!.refreshToken.isNotEmpty; + String _getAuthorizationAsBasicHeader(String? authorization) => 'Basic $authorization'; String _getTokenAsBearerHeader(String token) => 'Bearer $token';