TF-2387 Handle sign in SAAS platform
This commit is contained in:
@@ -1,9 +1,60 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/network/authentication_client/authentication_client_base.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/repository/account_repository.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/repository/authentication_oidc_repository.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/repository/credential_repository.dart';
|
||||
import 'package:tmail_ui_user/features/starting_page/data/datasource/saas_authentication_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/starting_page/data/datasource_impl/saas_authentication_datasource_impl.dart';
|
||||
import 'package:tmail_ui_user/features/starting_page/data/repository/saas_authentication_repository_impl.dart';
|
||||
import 'package:tmail_ui_user/features/starting_page/domain/repository/saas_authentication_repository.dart';
|
||||
import 'package:tmail_ui_user/features/starting_page/domain/usecase/sign_in_saas_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/starting_page/presentation/twake_welcome/twake_welcome_controller.dart';
|
||||
import 'package:tmail_ui_user/main/exceptions/remote_exception_thrower.dart';
|
||||
|
||||
class TwakeWelcomeBindings extends BaseBindings {
|
||||
|
||||
class TwakeWelcomeBindings extends Bindings {
|
||||
@override
|
||||
void dependencies() {
|
||||
Get.lazyPut(() => TwakeWelcomeController());
|
||||
void bindingsController() {
|
||||
Get.lazyPut(() => TwakeWelcomeController(
|
||||
Get.find<SignInSaasInteractor>(),
|
||||
));
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsInteractor() {
|
||||
Get.lazyPut(() => SignInSaasInteractor(
|
||||
Get.find<SaasAuthenticationRepository>(),
|
||||
Get.find<AuthenticationOIDCRepository>(),
|
||||
Get.find<AccountRepository>(),
|
||||
Get.find<CredentialRepository>(),
|
||||
));
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsDataSourceImpl() {
|
||||
Get.lazyPut(() => SaasAuthenticationDataSourceImpl(
|
||||
Get.find<AuthenticationClientBase>(),
|
||||
Get.find<RemoteExceptionThrower>(),
|
||||
));
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsDataSource() {
|
||||
Get.lazyPut<SaasAuthenticationDataSource>(
|
||||
() => Get.find<SaasAuthenticationDataSourceImpl>());
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepository() {
|
||||
Get.lazyPut<SaasAuthenticationRepository>(
|
||||
() => Get.find<SaasAuthenticationRepositoryImpl>());
|
||||
}
|
||||
|
||||
@override
|
||||
void bindingsRepositoryImpl() {
|
||||
Get.lazyPut(() => SaasAuthenticationRepositoryImpl(
|
||||
Get.find<SaasAuthenticationDataSource>(),
|
||||
));
|
||||
}
|
||||
}
|
||||
+66
-2
@@ -1,12 +1,25 @@
|
||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:model/oidc/oidc_configuration.dart';
|
||||
import 'package:tmail_ui_user/features/base/reloadable/reloadable_controller.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/presentation/login_form_type.dart';
|
||||
import 'package:tmail_ui_user/features/login/presentation/model/login_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/starting_page/domain/state/sign_in_saas_state.dart';
|
||||
import 'package:tmail_ui_user/features/starting_page/domain/usecase/sign_in_saas_interactor.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||
|
||||
class TwakeWelcomeController extends BaseController {
|
||||
class TwakeWelcomeController extends ReloadableController {
|
||||
|
||||
final SignInSaasInteractor _signInSaasInteractor;
|
||||
|
||||
TwakeWelcomeController(this._signInSaasInteractor);
|
||||
|
||||
void handleUseCompanyServer() {
|
||||
popAndPush(
|
||||
@@ -17,4 +30,55 @@ class TwakeWelcomeController extends BaseController {
|
||||
void onClickPrivacyPolicy() {
|
||||
AppUtils.launchLink(AppConfig.linagoraPrivacyUrl);
|
||||
}
|
||||
|
||||
void onClickSignIn() {
|
||||
if (AppConfig.saasServerUrl.isEmpty) {
|
||||
consumeState(Stream.value(Left(SignInSaasFailure(CanNotFoundSaasServerUrl()))));
|
||||
return;
|
||||
}
|
||||
|
||||
final baseUri = Uri.tryParse(AppConfig.saasServerUrl);
|
||||
|
||||
if (baseUri == null) {
|
||||
consumeState(Stream.value(Left(SignInSaasFailure(SaasServerUriIsNull()))));
|
||||
return;
|
||||
}
|
||||
|
||||
consumeState(_signInSaasInteractor.execute(
|
||||
baseUri: baseUri,
|
||||
oidcConfiguration: OIDCConfiguration(
|
||||
authority: AppConfig.registrationUrl,
|
||||
clientId: OIDCConstant.saasClientId,
|
||||
scopes: AppConfig.oidcScopes
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
@override
|
||||
void handleSuccessViewState(Success success) {
|
||||
if (success is SignInSaasSuccess) {
|
||||
_handleSignInSaasSuccess(success);
|
||||
} else {
|
||||
super.handleSuccessViewState(success);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void handleReloaded(Session session) {
|
||||
popAndPush(
|
||||
RouteUtils.generateNavigationRoute(AppRoutes.dashboard),
|
||||
arguments: session);
|
||||
}
|
||||
|
||||
void _handleSignInSaasSuccess(SignInSaasSuccess success) {
|
||||
dynamicUrlInterceptors.setJmapUrl(success.baseUri.toString());
|
||||
dynamicUrlInterceptors.changeBaseUrl(success.baseUri.toString());
|
||||
authorizationInterceptors.setTokenAndAuthorityOidc(
|
||||
newToken: success.tokenOIDC,
|
||||
newConfig: success.oidcConfiguration);
|
||||
authorizationIsolateInterceptors.setTokenAndAuthorityOidc(
|
||||
newToken: success.tokenOIDC,
|
||||
newConfig: success.oidcConfiguration);
|
||||
getSessionAction();
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import 'package:linagora_design_flutter/linagora_design_flutter.dart';
|
||||
import 'package:tmail_ui_user/features/starting_page/presentation/twake_welcome/twake_welcome_controller.dart';
|
||||
import 'package:tmail_ui_user/features/starting_page/presentation/twake_welcome/twake_welcome_view_style.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||
|
||||
class TwakeWelcomeView extends GetWidget<TwakeWelcomeController> {
|
||||
|
||||
@@ -31,8 +32,13 @@ class TwakeWelcomeView extends GetWidget<TwakeWelcomeController> {
|
||||
hoverColor: Colors.transparent,
|
||||
highlightColor: Colors.transparent,
|
||||
overlayColor: WidgetStateProperty.all(Colors.transparent),
|
||||
signInTitle: AppLocalizations.of(context).signIn.capitalizeFirst ?? '',
|
||||
createTwakeIdTitle: AppLocalizations.of(context).createTwakeId,
|
||||
signInTitle: AppConfig.isSaasPlatForm
|
||||
? AppLocalizations.of(context).signIn.capitalizeFirst ?? ''
|
||||
: null,
|
||||
onSignInOnTap: controller.onClickSignIn,
|
||||
createTwakeIdTitle: AppConfig.isSaasPlatForm
|
||||
? AppLocalizations.of(context).createTwakeId
|
||||
: null,
|
||||
useCompanyServerTitle: AppLocalizations.of(context).useCompanyServer,
|
||||
description: AppLocalizations.of(context).descriptionWelcomeTo,
|
||||
privacyPolicy: AppLocalizations.of(context).privacyPolicy,
|
||||
|
||||
Reference in New Issue
Block a user