TF-3278 Handle open app via deep link at MailboxDashboard screen
This commit is contained in:
@@ -0,0 +1 @@
|
||||
class UserCancelledLogoutOIDCFlowException implements Exception {}
|
||||
@@ -4,6 +4,7 @@ import 'package:core/data/network/config/service_path.dart';
|
||||
import 'package:core/utils/platform_info.dart';
|
||||
import 'package:model/oidc/oidc_configuration.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/extensions/service_path_extension.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/model/oidc_configuration_cache.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/network/config/oidc_constant.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||
|
||||
@@ -12,32 +13,29 @@ extension OidcConfigurationExtensions on OIDCConfiguration {
|
||||
String get redirectUrl {
|
||||
if (PlatformInfo.isWeb) {
|
||||
return AppConfig.domainRedirectUrl.endsWith('/')
|
||||
? AppConfig.domainRedirectUrl + loginRedirectOidcWeb
|
||||
: '${AppConfig.domainRedirectUrl}/$loginRedirectOidcWeb';
|
||||
? AppConfig.domainRedirectUrl + OIDCConstant.loginRedirectOidcWeb
|
||||
: '${AppConfig.domainRedirectUrl}/${OIDCConstant.loginRedirectOidcWeb}';
|
||||
} else {
|
||||
return _isSaasAuthority(authority)
|
||||
return isTWP
|
||||
? OIDCConstant.twakeWorkplaceRedirectUrl
|
||||
: redirectOidcMobile;
|
||||
: OIDCConstant.redirectOidcMobile;
|
||||
}
|
||||
}
|
||||
|
||||
String get logoutRedirectUrl {
|
||||
if (PlatformInfo.isWeb) {
|
||||
if (AppConfig.domainRedirectUrl.endsWith('/')) {
|
||||
return AppConfig.domainRedirectUrl + logoutRedirectOidcWeb;
|
||||
return AppConfig.domainRedirectUrl + OIDCConstant.logoutRedirectOidcWeb;
|
||||
} else {
|
||||
return '${AppConfig.domainRedirectUrl}/$logoutRedirectOidcWeb';
|
||||
return '${AppConfig.domainRedirectUrl}/${OIDCConstant.logoutRedirectOidcWeb}';
|
||||
}
|
||||
} else {
|
||||
return _isSaasAuthority(authority)
|
||||
return isTWP
|
||||
? OIDCConstant.twakeWorkplaceRedirectUrl
|
||||
: redirectOidcMobile;
|
||||
: OIDCConstant.redirectOidcMobile;
|
||||
}
|
||||
}
|
||||
|
||||
bool _isSaasAuthority(String authority) =>
|
||||
authority == AppConfig.saasRegistrationUrl;
|
||||
|
||||
String get signInTWPUrl => ServicePath(authority)
|
||||
.withQueryParameters([
|
||||
StringQueryParameter(
|
||||
@@ -57,4 +55,8 @@ extension OidcConfigurationExtensions on OIDCConfiguration {
|
||||
StringQueryParameter('app', OIDCConstant.appParameter),
|
||||
])
|
||||
.generateEndpointPath();
|
||||
|
||||
OidcConfigurationCache toOidcConfigurationCache() {
|
||||
return OidcConfigurationCache(authority, isTWP);
|
||||
}
|
||||
}
|
||||
@@ -16,9 +16,9 @@ abstract class AuthenticationOIDCRepository {
|
||||
|
||||
Future<TokenOIDC> getStoredTokenOIDC(String tokenIdHash);
|
||||
|
||||
Future<void> persistAuthorityOidc(String authority);
|
||||
Future<void> persistOidcConfiguration(OIDCConfiguration oidcConfiguration);
|
||||
|
||||
Future<void> deleteAuthorityOidc();
|
||||
Future<void> deleteOidcConfiguration();
|
||||
|
||||
Future<OIDCConfiguration> getStoredOidcConfiguration();
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ class DeleteAuthorityOidcInteractor {
|
||||
try {
|
||||
await Future.wait([
|
||||
_credentialRepository.removeBaseUrl(),
|
||||
_authenticationOIDCRepository.deleteAuthorityOidc(),
|
||||
_authenticationOIDCRepository.deleteOidcConfiguration(),
|
||||
_authenticationOIDCRepository.deleteTokenOIDC(),
|
||||
]);
|
||||
return Right(DeleteAuthorityOidcSuccess());
|
||||
|
||||
@@ -15,7 +15,7 @@ class GetOIDCConfigurationInteractor {
|
||||
try {
|
||||
yield Right<Failure, Success>(GetOIDCConfigurationLoading());
|
||||
final oidcConfiguration = await _oidcRepository.getOIDCConfiguration(oidcResponse);
|
||||
await _oidcRepository.persistAuthorityOidc(oidcConfiguration.authority);
|
||||
await _oidcRepository.persistOidcConfiguration(oidcConfiguration);
|
||||
yield Right<Failure, Success>(GetOIDCConfigurationSuccess(oidcConfiguration));
|
||||
} catch (e) {
|
||||
log('GetOIDCConfigurationInteractor::execute(): ERROR: $e');
|
||||
|
||||
@@ -35,7 +35,7 @@ class GetTokenOIDCInteractor {
|
||||
await Future.wait([
|
||||
_credentialRepository.saveBaseUrl(baseUrl),
|
||||
authenticationOIDCRepository.persistTokenOIDC(tokenOIDC),
|
||||
authenticationOIDCRepository.persistAuthorityOidc(config.authority),
|
||||
authenticationOIDCRepository.persistOidcConfiguration(config),
|
||||
]);
|
||||
|
||||
await _accountRepository.setCurrentAccount(
|
||||
|
||||
Reference in New Issue
Block a user