@@ -14,6 +14,7 @@ import 'package:model/account/password.dart';
14
14
import 'package:model/oidc/oidc_configuration.dart' ;
15
15
import 'package:model/oidc/request/oidc_request.dart' ;
16
16
import 'package:model/oidc/response/oidc_response.dart' ;
17
+ import 'package:model/oidc/token_oidc.dart' ;
17
18
import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.dart' ;
18
19
import 'package:tmail_ui_user/features/home/domain/state/get_session_state.dart' ;
19
20
import 'package:tmail_ui_user/features/login/data/network/oidc_error.dart' ;
@@ -49,6 +50,8 @@ import 'package:tmail_ui_user/features/login/domain/usecases/save_login_url_on_m
49
50
import 'package:tmail_ui_user/features/login/domain/usecases/save_login_username_on_mobile_interactor.dart' ;
50
51
import 'package:tmail_ui_user/features/login/presentation/login_form_type.dart' ;
51
52
import 'package:tmail_ui_user/features/login/presentation/model/login_arguments.dart' ;
53
+ import 'package:tmail_ui_user/features/starting_page/domain/state/sign_in_twake_workplace_state.dart' ;
54
+ import 'package:tmail_ui_user/features/starting_page/domain/usecase/sign_in_twake_workplace_interactor.dart' ;
52
55
import 'package:tmail_ui_user/main/routes/app_routes.dart' ;
53
56
import 'package:tmail_ui_user/main/routes/route_navigation.dart' ;
54
57
import 'package:tmail_ui_user/main/routes/route_utils.dart' ;
@@ -70,6 +73,7 @@ class LoginController extends ReloadableController {
70
73
final SaveLoginUsernameOnMobileInteractor _saveLoginUsernameOnMobileInteractor;
71
74
final GetAllRecentLoginUsernameOnMobileInteractor _getAllRecentLoginUsernameOnMobileInteractor;
72
75
final DNSLookupToGetJmapUrlInteractor _dnsLookupToGetJmapUrlInteractor;
76
+ final SignInTwakeWorkplaceInteractor _signInTwakeWorkplaceInteractor;
73
77
74
78
final TextEditingController urlInputController = TextEditingController ();
75
79
final TextEditingController usernameInputController = TextEditingController ();
@@ -99,6 +103,7 @@ class LoginController extends ReloadableController {
99
103
this ._saveLoginUsernameOnMobileInteractor,
100
104
this ._getAllRecentLoginUsernameOnMobileInteractor,
101
105
this ._dnsLookupToGetJmapUrlInteractor,
106
+ this ._signInTwakeWorkplaceInteractor,
102
107
);
103
108
104
109
@override
@@ -130,7 +135,8 @@ class LoginController extends ReloadableController {
130
135
_handleCheckOIDCIsAvailableFailure (failure);
131
136
} else if (failure is GetStoredOidcConfigurationFailure ||
132
137
failure is GetOIDCIsAvailableFailure ||
133
- failure is GetOIDCConfigurationFailure
138
+ failure is GetOIDCConfigurationFailure ||
139
+ failure is SignInTwakeWorkplaceFailure
134
140
) {
135
141
_handleCommonOIDCFailure ();
136
142
} else if (failure is GetTokenOIDCFailure ) {
@@ -168,6 +174,12 @@ class LoginController extends ReloadableController {
168
174
_loginSuccessAction (success);
169
175
} else if (success is DNSLookupToGetJmapUrlSuccess ) {
170
176
_handleDNSLookupToGetJmapUrlSuccess (success);
177
+ } else if (success is SignInTwakeWorkplaceSuccess ) {
178
+ _synchronizeTokenAndGetSession (
179
+ baseUri: success.baseUri,
180
+ tokenOIDC: success.tokenOIDC,
181
+ oidcConfiguration: success.oidcConfiguration,
182
+ );
171
183
} else {
172
184
super .handleSuccessViewState (success);
173
185
}
@@ -180,7 +192,9 @@ class LoginController extends ReloadableController {
180
192
_handleCheckOIDCIsAvailableFailure (failure);
181
193
} else if (failure is GetStoredOidcConfigurationFailure ||
182
194
failure is GetOIDCConfigurationFailure ||
183
- failure is GetOIDCIsAvailableFailure ) {
195
+ failure is GetOIDCIsAvailableFailure ||
196
+ failure is SignInTwakeWorkplaceFailure
197
+ ) {
184
198
_handleCommonOIDCFailure ();
185
199
} else if (failure is GetTokenOIDCFailure ) {
186
200
_handleNoSuitableBrowserOIDC (failure)
@@ -326,11 +340,41 @@ class LoginController extends ReloadableController {
326
340
void _getOIDCConfigurationSuccess (GetOIDCConfigurationSuccess success) {
327
341
if (PlatformInfo .isWeb) {
328
342
_authenticateOidcOnBrowserAction (success.oidcConfiguration);
343
+ } else if (success.oidcConfiguration.authority == AppConfig .saasRegistrationUrl) {
344
+ _getTokenOIDCOnSaaSPlatform (success.oidcConfiguration);
329
345
} else {
330
346
_getTokenOIDCAction (success.oidcConfiguration);
331
347
}
332
348
}
333
349
350
+ void _getTokenOIDCOnSaaSPlatform (OIDCConfiguration oidcConfiguration) {
351
+ if (_currentBaseUrl != null ) {
352
+ consumeState (_signInTwakeWorkplaceInteractor.execute (
353
+ baseUri: _currentBaseUrl! ,
354
+ oidcConfiguration: oidcConfiguration,
355
+ ));
356
+ } else {
357
+ dispatchState (Left (GetTokenOIDCFailure (CanNotFoundBaseUrl ())));
358
+ }
359
+ }
360
+
361
+ void _synchronizeTokenAndGetSession ({
362
+ required Uri baseUri,
363
+ required TokenOIDC tokenOIDC,
364
+ required OIDCConfiguration oidcConfiguration,
365
+ }) {
366
+ dynamicUrlInterceptors.setJmapUrl (baseUri.toString ());
367
+ dynamicUrlInterceptors.changeBaseUrl (baseUri.toString ());
368
+ authorizationInterceptors.setTokenAndAuthorityOidc (
369
+ newToken: tokenOIDC,
370
+ newConfig: oidcConfiguration);
371
+ authorizationIsolateInterceptors.setTokenAndAuthorityOidc (
372
+ newToken: tokenOIDC,
373
+ newConfig: oidcConfiguration);
374
+
375
+ getSessionAction ();
376
+ }
377
+
334
378
void _getTokenOIDCAction (OIDCConfiguration config) {
335
379
if (_currentBaseUrl != null ) {
336
380
consumeState (_getTokenOIDCInteractor.execute (_currentBaseUrl! , config));
@@ -357,15 +401,11 @@ class LoginController extends ReloadableController {
357
401
}
358
402
359
403
void _getTokenOIDCSuccess (GetTokenOIDCSuccess success) {
360
- dynamicUrlInterceptors.setJmapUrl (_currentBaseUrl? .toString ());
361
- dynamicUrlInterceptors.changeBaseUrl (_currentBaseUrl? .toString ());
362
- authorizationInterceptors.setTokenAndAuthorityOidc (
363
- newToken: success.tokenOIDC,
364
- newConfig: success.configuration);
365
- authorizationIsolateInterceptors.setTokenAndAuthorityOidc (
366
- newToken: success.tokenOIDC,
367
- newConfig: success.configuration);
368
- getSessionAction ();
404
+ _synchronizeTokenAndGetSession (
405
+ baseUri: _currentBaseUrl! ,
406
+ tokenOIDC: success.tokenOIDC,
407
+ oidcConfiguration: success.configuration,
408
+ );
369
409
}
370
410
371
411
void _loginSuccessAction (AuthenticationUserSuccess success) {
0 commit comments