TF-2387 Handle sign up twake workplace
This commit is contained in:
@@ -2,5 +2,7 @@ import 'package:model/oidc/oidc_configuration.dart';
|
||||
import 'package:model/oidc/token_oidc.dart';
|
||||
|
||||
abstract class SaasAuthenticationRepository {
|
||||
Future<TokenOIDC> signIn(OIDCConfiguration oidcConfiguration);
|
||||
Future<TokenOIDC> signInTwakeWorkplace(OIDCConfiguration oidcConfiguration);
|
||||
|
||||
Future<TokenOIDC> signUpTwakeWorkplace(OIDCConfiguration oidcConfiguration);
|
||||
}
|
||||
+5
-5
@@ -3,19 +3,19 @@ import 'package:core/presentation/state/success.dart';
|
||||
import 'package:model/oidc/oidc_configuration.dart';
|
||||
import 'package:model/oidc/token_oidc.dart';
|
||||
|
||||
class SignInSaasLoading extends LoadingState {}
|
||||
class SignInTwakeWorkplaceLoading extends LoadingState {}
|
||||
|
||||
class SignInSaasSuccess extends Success {
|
||||
class SignInTwakeWorkplaceSuccess extends Success {
|
||||
final TokenOIDC tokenOIDC;
|
||||
final Uri baseUri;
|
||||
final OIDCConfiguration oidcConfiguration;
|
||||
|
||||
SignInSaasSuccess(this.tokenOIDC, this.baseUri, this.oidcConfiguration);
|
||||
SignInTwakeWorkplaceSuccess(this.tokenOIDC, this.baseUri, this.oidcConfiguration);
|
||||
|
||||
@override
|
||||
List<Object> get props => [tokenOIDC, baseUri, oidcConfiguration];
|
||||
}
|
||||
|
||||
class SignInSaasFailure extends FeatureFailure {
|
||||
SignInSaasFailure(dynamic exception) : super(exception: exception);
|
||||
class SignInTwakeWorkplaceFailure extends FeatureFailure {
|
||||
SignInTwakeWorkplaceFailure(dynamic exception) : super(exception: exception);
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:model/oidc/oidc_configuration.dart';
|
||||
import 'package:model/oidc/token_oidc.dart';
|
||||
|
||||
class SignUpTwakeWorkplaceLoading extends LoadingState {}
|
||||
|
||||
class SignUpTwakeWorkplaceSuccess extends Success {
|
||||
final TokenOIDC tokenOIDC;
|
||||
final Uri baseUri;
|
||||
final OIDCConfiguration oidcConfiguration;
|
||||
|
||||
SignUpTwakeWorkplaceSuccess(this.tokenOIDC, this.baseUri, this.oidcConfiguration);
|
||||
|
||||
@override
|
||||
List<Object> get props => [tokenOIDC, baseUri, oidcConfiguration];
|
||||
}
|
||||
|
||||
class SignUpTwakeWorkplaceFailure extends FeatureFailure {
|
||||
SignUpTwakeWorkplaceFailure(dynamic exception) : super(exception: exception);
|
||||
}
|
||||
+7
-9
@@ -5,20 +5,19 @@ import 'package:model/account/authentication_type.dart';
|
||||
import 'package:model/account/personal_account.dart';
|
||||
import 'package:model/oidc/oidc_configuration.dart';
|
||||
import 'package:model/oidc/token_oidc.dart';
|
||||
import 'package:rich_text_composer/views/commons/logger.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/domain/repository/saas_authentication_repository.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/state/sign_in_twake_workplace_state.dart';
|
||||
|
||||
class SignInSaasInteractor {
|
||||
class SignInTwakeWorkplaceInteractor {
|
||||
final SaasAuthenticationRepository _saasRepository;
|
||||
final AuthenticationOIDCRepository _authenticationOIDCRepository;
|
||||
final AccountRepository _accountRepository;
|
||||
final CredentialRepository _credentialRepository;
|
||||
|
||||
SignInSaasInteractor(
|
||||
const SignInTwakeWorkplaceInteractor(
|
||||
this._saasRepository,
|
||||
this._authenticationOIDCRepository,
|
||||
this._accountRepository,
|
||||
@@ -30,9 +29,9 @@ class SignInSaasInteractor {
|
||||
required OIDCConfiguration oidcConfiguration
|
||||
}) async* {
|
||||
try {
|
||||
yield Right<Failure, Success>(SignInSaasLoading());
|
||||
yield Right<Failure, Success>(SignInTwakeWorkplaceLoading());
|
||||
|
||||
final tokenOIDC = await _saasRepository.signIn(oidcConfiguration);
|
||||
final tokenOIDC = await _saasRepository.signInTwakeWorkplace(oidcConfiguration);
|
||||
|
||||
await Future.wait([
|
||||
_credentialRepository.saveBaseUrl(baseUri),
|
||||
@@ -48,10 +47,9 @@ class SignInSaasInteractor {
|
||||
)
|
||||
);
|
||||
|
||||
yield Right<Failure, Success>(SignInSaasSuccess(tokenOIDC, baseUri, oidcConfiguration));
|
||||
yield Right<Failure, Success>(SignInTwakeWorkplaceSuccess(tokenOIDC, baseUri, oidcConfiguration));
|
||||
} catch (e) {
|
||||
logError('SignInSaasInteractor::execute():Exception = $e');
|
||||
yield Left<Failure, Success>(SignInSaasFailure(e));
|
||||
yield Left<Failure, Success>(SignInTwakeWorkplaceFailure(e));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
import 'package:core/presentation/state/failure.dart';
|
||||
import 'package:core/presentation/state/success.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:model/account/authentication_type.dart';
|
||||
import 'package:model/account/personal_account.dart';
|
||||
import 'package:model/oidc/oidc_configuration.dart';
|
||||
import 'package:model/oidc/token_oidc.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/domain/repository/saas_authentication_repository.dart';
|
||||
import 'package:tmail_ui_user/features/starting_page/domain/state/sign_up_twake_workplace_state.dart';
|
||||
|
||||
class SignUpTwakeWorkplaceInteractor {
|
||||
final SaasAuthenticationRepository _saasRepository;
|
||||
final AuthenticationOIDCRepository _authenticationOIDCRepository;
|
||||
final AccountRepository _accountRepository;
|
||||
final CredentialRepository _credentialRepository;
|
||||
|
||||
const SignUpTwakeWorkplaceInteractor(
|
||||
this._saasRepository,
|
||||
this._authenticationOIDCRepository,
|
||||
this._accountRepository,
|
||||
this._credentialRepository
|
||||
);
|
||||
|
||||
Stream<Either<Failure, Success>> execute({
|
||||
required Uri baseUri,
|
||||
required OIDCConfiguration oidcConfiguration
|
||||
}) async* {
|
||||
try {
|
||||
yield Right<Failure, Success>(SignUpTwakeWorkplaceLoading());
|
||||
|
||||
final tokenOIDC = await _saasRepository.signUpTwakeWorkplace(oidcConfiguration);
|
||||
|
||||
await Future.wait([
|
||||
_credentialRepository.saveBaseUrl(baseUri),
|
||||
_authenticationOIDCRepository.persistTokenOIDC(tokenOIDC),
|
||||
_authenticationOIDCRepository.persistAuthorityOidc(oidcConfiguration.authority),
|
||||
]);
|
||||
|
||||
await _accountRepository.setCurrentAccount(
|
||||
PersonalAccount(
|
||||
tokenOIDC.tokenIdHash,
|
||||
AuthenticationType.oidc,
|
||||
isSelected: true
|
||||
)
|
||||
);
|
||||
|
||||
yield Right<Failure, Success>(SignUpTwakeWorkplaceSuccess(tokenOIDC, baseUri, oidcConfiguration));
|
||||
} catch (e) {
|
||||
yield Left<Failure, Success>(SignUpTwakeWorkplaceFailure(e));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user