diff --git a/lib/features/login/data/repository/credential_repository_impl.dart b/lib/features/login/data/repository/credential_repository_impl.dart index 5077e7bf8..13973ee97 100644 --- a/lib/features/login/data/repository/credential_repository_impl.dart +++ b/lib/features/login/data/repository/credential_repository_impl.dart @@ -2,7 +2,7 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:tmail_ui_user/features/login/data/local/authentication_info_cache_manager.dart'; import 'package:tmail_ui_user/features/login/data/model/authentication_info_cache.dart'; -import 'package:tmail_ui_user/features/login/data/utils/login_constant.dart'; +import 'package:tmail_ui_user/features/login/domain/model/login_constants.dart'; import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart'; class CredentialRepositoryImpl extends CredentialRepository { @@ -17,17 +17,17 @@ class CredentialRepositoryImpl extends CredentialRepository { @override Future getBaseUrl() async { - return Uri.parse(sharedPreferences.getString(LoginConstant.keyBaseUrl) ?? ''); + return Uri.parse(sharedPreferences.getString(LoginConstants.KEY_BASE_URL) ?? ''); } @override Future saveBaseUrl(Uri baseUrl) async { - await sharedPreferences.setString(LoginConstant.keyBaseUrl, baseUrl.toString()); + await sharedPreferences.setString(LoginConstants.KEY_BASE_URL, baseUrl.toString()); } @override Future removeBaseUrl() async { - await sharedPreferences.remove(LoginConstant.keyBaseUrl); + await sharedPreferences.remove(LoginConstants.KEY_BASE_URL); } @override diff --git a/lib/features/login/data/utils/login_constant.dart b/lib/features/login/data/utils/login_constant.dart deleted file mode 100644 index 1a836e8e3..000000000 --- a/lib/features/login/data/utils/login_constant.dart +++ /dev/null @@ -1,4 +0,0 @@ - -class LoginConstant { - static const String keyBaseUrl = 'KEY_BASE_URL'; -} \ No newline at end of file diff --git a/lib/features/login/domain/model/login_constants.dart b/lib/features/login/domain/model/login_constants.dart new file mode 100644 index 000000000..ee177b319 --- /dev/null +++ b/lib/features/login/domain/model/login_constants.dart @@ -0,0 +1,5 @@ + +class LoginConstants { + static const String KEY_BASE_URL = 'KEY_BASE_URL'; + static const String AUTH_DESTINATION_KEY = "auth_destination_url"; +} \ No newline at end of file diff --git a/lib/features/login/presentation/login_controller.dart b/lib/features/login/presentation/login_controller.dart index 25ac9c83f..84579d231 100644 --- a/lib/features/login/presentation/login_controller.dart +++ b/lib/features/login/presentation/login_controller.dart @@ -16,6 +16,7 @@ import 'package:model/oidc/request/oidc_request.dart'; import 'package:model/oidc/response/oidc_response.dart'; import 'package:model/oidc/token_oidc.dart'; import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.dart'; +import 'package:tmail_ui_user/features/login/domain/model/login_constants.dart'; import 'package:tmail_ui_user/features/login/domain/model/recent_login_url.dart'; import 'package:tmail_ui_user/features/login/domain/model/recent_login_username.dart'; import 'package:tmail_ui_user/features/login/domain/state/authenticate_oidc_on_browser_state.dart'; @@ -53,6 +54,7 @@ import 'package:tmail_ui_user/main/routes/navigation_router.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import 'package:tmail_ui_user/main/routes/route_utils.dart'; import 'package:tmail_ui_user/main/utils/app_config.dart'; +import 'package:universal_html/html.dart' as html; class LoginController extends ReloadableController { @@ -70,7 +72,6 @@ class LoginController extends ReloadableController { final SaveLoginUsernameOnMobileInteractor _saveLoginUsernameOnMobileInteractor; final GetAllRecentLoginUsernameOnMobileInteractor _getAllRecentLoginUsernameOnMobileInteractor; - final TextEditingController urlInputController = TextEditingController(); final TextEditingController usernameInputController = TextEditingController(); final NetworkConnectionController networkConnectionController = Get.find(); @@ -277,6 +278,7 @@ class LoginController extends ReloadableController { } void _getOIDCConfigurationSuccess(GetOIDCConfigurationSuccess success) { + log('LoginController::_getOIDCConfigurationSuccess():success: $success'); loginState.value = LoginState(Right(success)); if (BuildUtils.isWeb) { _authenticateOidcOnBrowserAction(success.oidcConfiguration); @@ -295,6 +297,8 @@ class LoginController extends ReloadableController { } void _authenticateOidcOnBrowserAction(OIDCConfiguration config) async { + _removeAuthDestinationUrlInSessionStorage(); + final baseUri = _parseUri(AppConfig.baseUrl); if (baseUri != null) { consumeState(_authenticateOidcOnBrowserInteractor.execute(baseUri, config)); @@ -303,6 +307,13 @@ class LoginController extends ReloadableController { } } + void _removeAuthDestinationUrlInSessionStorage() { + final authDestinationUrlExist = html.window.sessionStorage.containsKey(LoginConstants.AUTH_DESTINATION_KEY); + if (authDestinationUrlExist) { + html.window.sessionStorage.remove(LoginConstants.AUTH_DESTINATION_KEY); + } + } + void _getTokenOIDCSuccess(GetTokenOIDCSuccess success) { log('LoginController::_getTokenOIDCSuccess(): ${success.tokenOIDC.toString()}'); loginState.value = LoginState(Right(success));