TF-1440 Fix user can not sign again after click back browser button in OIDC

(cherry picked from commit 27ff8d3a834306bf7f3711e0df85e7da126c7160)
This commit is contained in:
dab246
2023-03-24 12:01:43 +07:00
committed by Dat Vu
parent a794d8491e
commit a11415ce9c
4 changed files with 21 additions and 9 deletions
@@ -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<NetworkConnectionController>();
@@ -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));