From 37d36e90a4927158dc554a231cba7c0911435d4c Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 6 Sep 2022 19:13:15 +0700 Subject: [PATCH] TF-886 Clear AuthenticationInfo --- .../caching/authentication_info_cache_client.dart | 1 + lib/features/caching/caching_manager.dart | 11 ++++++++--- .../caching/config/hive_cache_config.dart | 5 +++++ .../local/authentication_info_cache_manager.dart | 4 ++++ .../repository/credential_repository_impl.dart | 15 +++++---------- .../domain/repository/credential_repository.dart | 6 ++---- .../usecases/delete_credential_interactor.dart | 3 +-- 7 files changed, 26 insertions(+), 19 deletions(-) diff --git a/lib/features/caching/authentication_info_cache_client.dart b/lib/features/caching/authentication_info_cache_client.dart index b98d22994..51e110c15 100644 --- a/lib/features/caching/authentication_info_cache_client.dart +++ b/lib/features/caching/authentication_info_cache_client.dart @@ -11,6 +11,7 @@ class AuthenticationInfoCacheClient extends HiveCacheClient clearAllData() { return Future.sync(() async { + await HiveCacheConfig.removeEncryptionKey(); final boxAuthenticationInfo = await openBox(); return boxAuthenticationInfo.clear(); }).catchError((error) { diff --git a/lib/features/caching/caching_manager.dart b/lib/features/caching/caching_manager.dart index 070214a1c..e2607e63d 100644 --- a/lib/features/caching/caching_manager.dart +++ b/lib/features/caching/caching_manager.dart @@ -1,6 +1,7 @@ import 'package:flutter/foundation.dart'; import 'package:tmail_ui_user/features/caching/account_cache_client.dart'; +import 'package:tmail_ui_user/features/caching/authentication_info_cache_client.dart'; import 'package:tmail_ui_user/features/caching/email_cache_client.dart'; import 'package:tmail_ui_user/features/caching/mailbox_cache_client.dart'; import 'package:tmail_ui_user/features/caching/recent_search_cache_client.dart'; @@ -15,6 +16,7 @@ class CachingManager { final RecentSearchCacheClient _recentSearchCacheClient; final TokenOidcCacheClient _tokenOidcCacheClient; final AccountCacheClient _accountCacheClient; + final AuthenticationInfoCacheClient _authenticationInfoCacheClient; CachingManager( this._mailboxCacheClient, @@ -22,7 +24,8 @@ class CachingManager { this._emailCacheClient, this._recentSearchCacheClient, this._tokenOidcCacheClient, - this._accountCacheClient + this._accountCacheClient, + this._authenticationInfoCacheClient, ); Future clearAll() async { @@ -33,7 +36,8 @@ class CachingManager { _emailCacheClient.clearAllData(), _recentSearchCacheClient.clearAllData(), _tokenOidcCacheClient.clearAllData(), - _accountCacheClient.clearAllData() + _accountCacheClient.clearAllData(), + _authenticationInfoCacheClient.clearAllData(), ]); } else { await Future.wait([ @@ -42,7 +46,8 @@ class CachingManager { _emailCacheClient.deleteBox(), _recentSearchCacheClient.deleteBox(), _tokenOidcCacheClient.deleteBox(), - _accountCacheClient.deleteBox() + _accountCacheClient.deleteBox(), + _authenticationInfoCacheClient.deleteBox(), ]); } } diff --git a/lib/features/caching/config/hive_cache_config.dart b/lib/features/caching/config/hive_cache_config.dart index 5faef4150..8768a6d5e 100644 --- a/lib/features/caching/config/hive_cache_config.dart +++ b/lib/features/caching/config/hive_cache_config.dart @@ -50,6 +50,11 @@ class HiveCacheConfig { return encryptionKey; } + static Future removeEncryptionKey() { + final sharedPreference = Get.find(); + return sharedPreference.remove(LoginConstant.keyHiveEncrypt); + } + void registerAdapter() { Hive.registerAdapter(MailboxCacheAdapter()); Hive.registerAdapter(MailboxRightsCacheAdapter()); diff --git a/lib/features/login/data/local/authentication_info_cache_manager.dart b/lib/features/login/data/local/authentication_info_cache_manager.dart index 164315955..fb3c8495c 100644 --- a/lib/features/login/data/local/authentication_info_cache_manager.dart +++ b/lib/features/login/data/local/authentication_info_cache_manager.dart @@ -15,4 +15,8 @@ class AuthenticationInfoCacheManager { Future getAuthenticationInfoStored() { return _authenticationInfoCacheClient.getItem(AuthenticationInfoCache.keyCacheValue); } + + Future removeAuthenticationInfo() { + return _authenticationInfoCacheClient.deleteItem(AuthenticationInfoCache.keyCacheValue); + } } \ No newline at end of file diff --git a/lib/features/login/data/repository/credential_repository_impl.dart b/lib/features/login/data/repository/credential_repository_impl.dart index 46f97dfde..85916799f 100644 --- a/lib/features/login/data/repository/credential_repository_impl.dart +++ b/lib/features/login/data/repository/credential_repository_impl.dart @@ -32,16 +32,6 @@ class CredentialRepositoryImpl extends CredentialRepository { await sharedPreferences.remove(LoginConstant.keyBaseUrl); } - @override - Future removePassword() async { - await sharedPreferences.remove(LoginConstant.keyPassword); - } - - @override - Future removeUserName() async { - await sharedPreferences.remove(LoginConstant.keyUserName); - } - @override Future getUserProfile() async { final json = sharedPreferences.getString(LoginConstant.keyUserProfile) ?? ''; @@ -70,4 +60,9 @@ class CredentialRepositoryImpl extends CredentialRepository { Future getAuthenticationInfoStored() { return _authenticationInfoCacheManager.getAuthenticationInfoStored(); } + + @override + Future removeAuthenticationInfo() { + return _authenticationInfoCacheManager.removeAuthenticationInfo(); + } } \ No newline at end of file diff --git a/lib/features/login/domain/repository/credential_repository.dart b/lib/features/login/domain/repository/credential_repository.dart index 259c091d6..3bf637132 100644 --- a/lib/features/login/domain/repository/credential_repository.dart +++ b/lib/features/login/domain/repository/credential_repository.dart @@ -8,10 +8,6 @@ abstract class CredentialRepository { Future getBaseUrl(); - Future removeUserName(); - - Future removePassword(); - Future saveUserProfile(UserProfile userProfile); Future removeUserProfile(); @@ -21,4 +17,6 @@ abstract class CredentialRepository { Future storeAuthenticationInfo(AuthenticationInfoCache authenticationInfoCache); Future getAuthenticationInfoStored(); + + Future removeAuthenticationInfo(); } \ No newline at end of file diff --git a/lib/features/login/domain/usecases/delete_credential_interactor.dart b/lib/features/login/domain/usecases/delete_credential_interactor.dart index 4cce59a8e..9fe600314 100644 --- a/lib/features/login/domain/usecases/delete_credential_interactor.dart +++ b/lib/features/login/domain/usecases/delete_credential_interactor.dart @@ -14,8 +14,7 @@ class DeleteCredentialInteractor { try { await Future.wait([ credentialRepository.removeBaseUrl(), - credentialRepository.removeUserName(), - credentialRepository.removePassword(), + credentialRepository.removeAuthenticationInfo(), credentialRepository.removeUserProfile(), ]); return Right(DeleteCredentialSuccess());