Handle web finger to get token in HomeController
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -38,4 +38,6 @@ abstract class AuthenticationOIDCDataSource {
|
||||
List<String> scopes);
|
||||
|
||||
Future<String> getAuthenticationInfo();
|
||||
|
||||
Future<void> removeAuthDestinationUrl();
|
||||
}
|
||||
@@ -1,9 +1,17 @@
|
||||
import 'package:model/model.dart';
|
||||
import 'package:model/oidc/oidc_configuration.dart';
|
||||
import 'package:model/oidc/request/oidc_request.dart';
|
||||
import 'package:model/oidc/response/oidc_discovery_response.dart';
|
||||
import 'package:model/oidc/response/oidc_response.dart';
|
||||
import 'package:model/oidc/token_id.dart';
|
||||
import 'package:model/oidc/token_oidc.dart';
|
||||
import 'package:tmail_ui_user/features/caching/utils/session_storage_manager.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/datasource/authentication_oidc_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/local/oidc_configuration_cache_manager.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/local/token_oidc_cache_manager.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/network/config/oidc_constant.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/network/oidc_http_client.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/model/login_constants.dart';
|
||||
import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart';
|
||||
|
||||
class AuthenticationOIDCDataSourceImpl extends AuthenticationOIDCDataSource {
|
||||
@@ -12,6 +20,7 @@ class AuthenticationOIDCDataSourceImpl extends AuthenticationOIDCDataSource {
|
||||
final AuthenticationClientBase _authenticationClient;
|
||||
final TokenOidcCacheManager _tokenOidcCacheManager;
|
||||
final OidcConfigurationCacheManager _oidcConfigurationCacheManager;
|
||||
final SessionStorageManager _sessionStorageManager;
|
||||
final ExceptionThrower _exceptionThrower;
|
||||
final ExceptionThrower _cacheExceptionThrower;
|
||||
|
||||
@@ -20,6 +29,7 @@ class AuthenticationOIDCDataSourceImpl extends AuthenticationOIDCDataSource {
|
||||
this._authenticationClient,
|
||||
this._tokenOidcCacheManager,
|
||||
this._oidcConfigurationCacheManager,
|
||||
this._sessionStorageManager,
|
||||
this._exceptionThrower,
|
||||
this._cacheExceptionThrower
|
||||
);
|
||||
@@ -109,7 +119,7 @@ class AuthenticationOIDCDataSourceImpl extends AuthenticationOIDCDataSource {
|
||||
Future<void> deleteOidcConfiguration() {
|
||||
return Future.sync(() async {
|
||||
return await _oidcConfigurationCacheManager.deleteOidcConfiguration();
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}).catchError(_cacheExceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -131,14 +141,25 @@ class AuthenticationOIDCDataSourceImpl extends AuthenticationOIDCDataSource {
|
||||
@override
|
||||
Future<String> getAuthenticationInfo() {
|
||||
return Future.sync(() async {
|
||||
return await _authenticationClient.getAuthenticationInfo();
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
return await _sessionStorageManager.get(
|
||||
OIDCConstant.authResponseKey,
|
||||
);
|
||||
}).catchError(_cacheExceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> deleteTokenOIDC() {
|
||||
return Future.sync(() async {
|
||||
return await _tokenOidcCacheManager.deleteTokenOidc();
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}).catchError(_cacheExceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> removeAuthDestinationUrl() {
|
||||
return Future.sync(() async {
|
||||
return await _sessionStorageManager.remove(
|
||||
LoginConstants.AUTH_DESTINATION_KEY,
|
||||
);
|
||||
}).catchError(_cacheExceptionThrower.throwException);
|
||||
}
|
||||
}
|
||||
@@ -13,8 +13,6 @@ abstract class AuthenticationClientBase {
|
||||
String discoveryUrl,
|
||||
List<String> scopes);
|
||||
|
||||
Future<String> getAuthenticationInfo();
|
||||
|
||||
Future<TokenOIDC> getTokenOIDC(
|
||||
String clientId,
|
||||
String redirectUrl,
|
||||
|
||||
-5
@@ -95,11 +95,6 @@ class AuthenticationClientMobile implements AuthenticationClientBase {
|
||||
return Future.value(null);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<String> getAuthenticationInfo() {
|
||||
return Future.value('');
|
||||
}
|
||||
|
||||
@override
|
||||
Future<TokenOIDC> signInTwakeWorkplace(OIDCConfiguration oidcConfiguration) async {
|
||||
final uri = await FlutterWebAuth2.authenticate(
|
||||
|
||||
@@ -9,11 +9,9 @@ import 'package:model/oidc/token_oidc.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/extensions/authentication_token_extension.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/extensions/token_response_extension.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/network/config/oidc_constant.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/utils/library_platform/app_auth_plugin/app_auth_plugin.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/extensions/oidc_configuration_extensions.dart';
|
||||
import 'package:universal_html/html.dart' as html;
|
||||
|
||||
class AuthenticationClientWeb implements AuthenticationClientBase {
|
||||
|
||||
@@ -96,17 +94,6 @@ class AuthenticationClientWeb implements AuthenticationClientBase {
|
||||
scopes: scopes));
|
||||
}
|
||||
|
||||
@override
|
||||
Future<String> getAuthenticationInfo() async {
|
||||
final authUrl = html.window.sessionStorage[OIDCConstant.authResponseKey];
|
||||
log('AuthenticationClientWeb::getAuthenticationInfo(): authUrl: $authUrl');
|
||||
if (authUrl != null && authUrl.isNotEmpty) {
|
||||
return authUrl;
|
||||
} else {
|
||||
throw CanNotAuthenticationInfoOnWeb();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<TokenOIDC> signUpTwakeWorkplace(OIDCConfiguration oidcConfiguration) {
|
||||
throw UnimplementedError();
|
||||
|
||||
@@ -93,4 +93,9 @@ class AuthenticationOIDCRepositoryImpl extends AuthenticationOIDCRepository {
|
||||
Future<void> deleteTokenOIDC() {
|
||||
return _oidcDataSource.deleteTokenOIDC();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> removeAuthDestinationUrl() {
|
||||
return _oidcDataSource.removeAuthDestinationUrl();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user