TF-2387 Handle sign up twake workplace

This commit is contained in:
dab246
2024-10-31 14:11:15 +07:00
committed by Dat H. Pham
parent 2de503d990
commit e13f86a037
25 changed files with 427 additions and 59 deletions
@@ -30,5 +30,9 @@ abstract class AuthenticationClientBase {
Future<bool> logoutOidc(TokenId tokenId, OIDCConfiguration config, OIDCDiscoveryResponse oidcRescovery);
Future<TokenOIDC> signInTwakeWorkplace(OIDCConfiguration oidcConfiguration);
Future<TokenOIDC> signUpTwakeWorkplace(OIDCConfiguration oidcConfiguration);
factory AuthenticationClientBase({String? tag}) => getAuthenticationClientImplementation(tag: tag);
}
@@ -1,6 +1,7 @@
import 'package:core/utils/app_logger.dart';
import 'package:flutter_appauth/flutter_appauth.dart';
import 'package:flutter_web_auth_2/flutter_web_auth_2.dart';
import 'package:get/get.dart';
import 'package:model/oidc/oidc_configuration.dart';
import 'package:model/oidc/response/oidc_discovery_response.dart';
@@ -9,6 +10,7 @@ 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/domain/exceptions/authentication_exception.dart';
import 'package:tmail_ui_user/features/login/domain/extensions/oidc_configuration_extensions.dart';
@@ -96,6 +98,32 @@ class AuthenticationClientMobile implements AuthenticationClientBase {
Future<String> getAuthenticationInfo() {
return Future.value('');
}
@override
Future<TokenOIDC> signInTwakeWorkplace(OIDCConfiguration oidcConfiguration) async {
final uri = await FlutterWebAuth2.authenticate(
url: oidcConfiguration.singInUrl,
callbackUrlScheme: OIDCConstant.twakeWorkplaceUrlScheme,
options: const FlutterWebAuth2Options(
intentFlags: ephemeralIntentFlags,
),
);
log('AuthenticationClientMobile::signInTwakeWorkplace():Uri = $uri');
return TokenOIDC.fromUri(uri);
}
@override
Future<TokenOIDC> signUpTwakeWorkplace(OIDCConfiguration oidcConfiguration) async {
final uri = await FlutterWebAuth2.authenticate(
url: oidcConfiguration.signUpUrl,
callbackUrlScheme: OIDCConstant.twakeWorkplaceUrlScheme,
options: const FlutterWebAuth2Options(
intentFlags: ephemeralIntentFlags,
),
);
log('AuthenticationClientMobile::signUpTwakeWorkplace():Uri = $uri');
return TokenOIDC.fromUri(uri);
}
}
AuthenticationClientBase getAuthenticationClientImplementation({String? tag}) =>
@@ -106,6 +106,16 @@ class AuthenticationClientWeb implements AuthenticationClientBase {
throw CanNotAuthenticationInfoOnWeb();
}
}
@override
Future<TokenOIDC> signUpTwakeWorkplace(OIDCConfiguration oidcConfiguration) {
throw UnimplementedError();
}
@override
Future<TokenOIDC> signInTwakeWorkplace(OIDCConfiguration oidcConfiguration) {
throw UnimplementedError();
}
}
AuthenticationClientBase getAuthenticationClientImplementation({String? tag}) =>