TF-606 Implement store/get authority oidc

This commit is contained in:
dab246
2022-06-03 17:15:39 +07:00
committed by Dat H. Pham
parent 5757a7b23a
commit 02a5fa4b4f
11 changed files with 86 additions and 11 deletions
@@ -11,4 +11,8 @@ abstract class AuthenticationOIDCRepository {
Future<void> persistTokenOIDC(TokenOIDC tokenOidc);
Future<TokenOIDC> getStoredTokenOIDC(String tokenIdHash);
Future<void> persistAuthorityOidc(String authority);
Future<OIDCConfiguration> getStoredOidcConfiguration();
}
@@ -1,19 +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 GetStoredTokenOidcSuccess extends UIState {
final Uri baseUrl;
final TokenOIDC tokenOidc;
final OIDCConfiguration oidcConfiguration;
GetStoredTokenOidcSuccess(this.baseUrl, this.tokenOidc);
GetStoredTokenOidcSuccess(this.baseUrl, this.tokenOidc, this.oidcConfiguration);
@override
List<Object?> get props => [baseUrl, tokenOidc];
List<Object?> get props => [baseUrl, tokenOidc, oidcConfiguration];
}
class GetStoredTokenOidcFailure extends FeatureFailure {
final exception;
final dynamic exception;
GetStoredTokenOidcFailure(this.exception);
@@ -22,4 +24,4 @@ class GetStoredTokenOidcFailure extends FeatureFailure {
@override
List<Object?> get props => [exception];
}
}
@@ -2,6 +2,7 @@ import 'package:core/presentation/state/failure.dart';
import 'package:core/presentation/state/success.dart';
import 'package:core/utils/app_logger.dart';
import 'package:dartz/dartz.dart';
import 'package:model/oidc/oidc_configuration.dart';
import 'package:model/oidc/token_oidc.dart';
import 'package:tmail_ui_user/features/login/domain/exceptions/authentication_exception.dart';
import 'package:tmail_ui_user/features/login/domain/extensions/uri_extension.dart';
@@ -20,15 +21,18 @@ class GetStoredTokenOidcInteractor {
yield Right<Failure, Success>(LoadingState());
final futureValue = await Future.wait([
_credentialRepository.getBaseUrl(),
_authenticationOIDCRepository.getStoredTokenOIDC(tokenIdHash)
_authenticationOIDCRepository.getStoredTokenOIDC(tokenIdHash),
_authenticationOIDCRepository.getStoredOidcConfiguration(),
], eagerError: true);
final baseUrl = futureValue.first as Uri;
final tokenOidc = futureValue.last as TokenOIDC;
final baseUrl = futureValue[0] as Uri;
final tokenOidc = futureValue[1] as TokenOIDC;
final oidcConfiguration = futureValue[2] as OIDCConfiguration;
log('GetStoredTokenOidcInteractor::execute(): $tokenOidc');
log('GetStoredTokenOidcInteractor::execute(): oidcConfiguration: $oidcConfiguration');
if (_isCredentialValid(baseUrl)) {
yield Right(GetStoredTokenOidcSuccess(baseUrl, tokenOidc));
yield Right(GetStoredTokenOidcSuccess(baseUrl, tokenOidc, oidcConfiguration));
} else {
yield Left(GetStoredTokenOidcFailure(const InvalidBaseUrl()));
}