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}) =>
@@ -1,4 +1,4 @@
import 'package:core/core.dart';
import 'package:core/utils/platform_info.dart';
import 'package:tmail_ui_user/main/utils/app_config.dart';
class OIDCConstant {
@@ -6,10 +6,11 @@ class OIDCConstant {
static List<String> get oidcScope => ['openid', 'profile', 'email', 'offline_access'];
static const keyAuthorityOidc = 'KEY_AUTHORITY_OIDC';
static const authResponseKey = "auth_info";
static const String twakeWorkplaceUrlScheme = 'twakemail.mobile';
static const String twakeWorkplaceRedirectUrl = '$twakeWorkplaceUrlScheme://redirect';
static const String appParameter = 'tmail';
static const String postRegisteredRedirectUrlPathParams = 'post_registered_redirect_url';
static const String postLoginRedirectUrlPathParams = 'post_login_redirect_url';
static String get clientId => PlatformInfo.isWeb ? AppConfig.webOidcClientId : mobileOidcClientId;
static String get saasClientId => PlatformInfo.isMobile
? mobileOidcClientId
: '';
}