From c16613eb69c1aa5ece42ef80dea46a12e21c9db2 Mon Sep 17 00:00:00 2001 From: Dat PHAM HOANG Date: Wed, 26 Jul 2023 11:10:30 +0700 Subject: [PATCH] If no refreshToken return, maybe the old refreshToken still available (cherry picked from commit ad0806651d671b350a1dda952e399c9557c2c4d7) --- .../data/extensions/token_response_extension.dart | 4 ++-- .../authentication_client_mobile.dart | 4 ++-- .../authentication_client_web.dart | 14 +++++++------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/features/login/data/extensions/token_response_extension.dart b/lib/features/login/data/extensions/token_response_extension.dart index 3807bdc7a..fbfff7910 100644 --- a/lib/features/login/data/extensions/token_response_extension.dart +++ b/lib/features/login/data/extensions/token_response_extension.dart @@ -4,11 +4,11 @@ import 'package:model/model.dart'; extension TokenResponseExtension on TokenResponse { - TokenOIDC toTokenOIDC() { + TokenOIDC toTokenOIDC({String? maybeAvailableRefreshToken}) { return TokenOIDC( accessToken ?? '', TokenId(idToken ?? ''), - refreshToken ?? '', + refreshToken ?? maybeAvailableRefreshToken ?? '', expiredTime: accessTokenExpirationDateTime ?? DateTime.now()); } } \ No newline at end of file diff --git a/lib/features/login/data/network/authentication_client/authentication_client_mobile.dart b/lib/features/login/data/network/authentication_client/authentication_client_mobile.dart index 2f20337af..9bfe11283 100644 --- a/lib/features/login/data/network/authentication_client/authentication_client_mobile.dart +++ b/lib/features/login/data/network/authentication_client/authentication_client_mobile.dart @@ -7,10 +7,10 @@ import 'package:model/oidc/response/oidc_discovery_response.dart'; import 'package:model/oidc/token_id.dart'; import 'package:model/oidc/token_oidc.dart'; import 'package:tmail_ui_user/features/login/data/extensions/authentication_token_extension.dart'; -import 'package:tmail_ui_user/features/login/domain/extensions/oidc_configuration_extensions.dart'; import 'package:tmail_ui_user/features/login/data/extensions/token_response_extension.dart'; import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart'; import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart'; +import 'package:tmail_ui_user/features/login/domain/extensions/oidc_configuration_extensions.dart'; class AuthenticationClientMobile implements AuthenticationClientBase { @@ -75,7 +75,7 @@ class AuthenticationClientMobile implements AuthenticationClientBase { log('AuthenticationClientMobile::refreshingTokensOIDC(): refreshToken: ${tokenResponse?.accessToken}'); if (tokenResponse != null) { - final tokenOIDC = tokenResponse.toTokenOIDC(); + final tokenOIDC = tokenResponse.toTokenOIDC(maybeAvailableRefreshToken: refreshToken); if (tokenOIDC.isTokenValid()) { return tokenOIDC; } else { diff --git a/lib/features/login/data/network/authentication_client/authentication_client_web.dart b/lib/features/login/data/network/authentication_client/authentication_client_web.dart index ae134abcc..1544923c0 100644 --- a/lib/features/login/data/network/authentication_client/authentication_client_web.dart +++ b/lib/features/login/data/network/authentication_client/authentication_client_web.dart @@ -1,19 +1,19 @@ import 'package:core/utils/app_logger.dart'; +import 'package:flutter_appauth_platform_interface/flutter_appauth_platform_interface.dart'; import 'package:get/get.dart'; +import 'package:model/oidc/oidc_configuration.dart'; import 'package:model/oidc/response/oidc_discovery_response.dart'; +import 'package:model/oidc/token_id.dart'; +import 'package:model/oidc/token_oidc.dart'; import 'package:tmail_ui_user/features/login/data/extensions/authentication_token_extension.dart'; -import 'package:tmail_ui_user/features/login/domain/extensions/oidc_configuration_extensions.dart'; import 'package:tmail_ui_user/features/login/data/extensions/token_response_extension.dart'; +import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart'; import 'package:tmail_ui_user/features/login/data/network/config/oidc_constant.dart'; import 'package:tmail_ui_user/features/login/data/utils/library_platform/app_auth_plugin/app_auth_plugin.dart'; import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart'; +import 'package:tmail_ui_user/features/login/domain/extensions/oidc_configuration_extensions.dart'; import 'package:universal_html/html.dart' as html; -import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart'; -import 'package:flutter_appauth_platform_interface/flutter_appauth_platform_interface.dart'; -import 'package:model/oidc/oidc_configuration.dart'; -import 'package:model/oidc/token_id.dart'; -import 'package:model/oidc/token_oidc.dart'; class AuthenticationClientWeb implements AuthenticationClientBase { @@ -74,7 +74,7 @@ class AuthenticationClientWeb implements AuthenticationClientBase { scopes: scopes)); if (tokenResponse != null) { - final tokenOIDC = tokenResponse.toTokenOIDC(); + final tokenOIDC = tokenResponse.toTokenOIDC(maybeAvailableRefreshToken: refreshToken); if (tokenOIDC.isTokenValid()) { return tokenOIDC; } else {