TF-571 Use response from webfinger to get OIDC from authority

This commit is contained in:
Dat PHAM HOANG
2022-05-27 11:34:53 +07:00
committed by Dat H. Pham
parent ea598c20b8
commit a48cd35d4f
14 changed files with 84 additions and 50 deletions
@@ -2,9 +2,9 @@
import 'package:model/model.dart';
abstract class AuthenticationOIDCRepository {
Future<bool> checkOIDCIsAvailable(OIDCRequest oidcRequest);
Future<OIDCResponse> checkOIDCIsAvailable(OIDCRequest oidcRequest);
Future<OIDCConfiguration> getOIDCConfiguration(Uri baseUri);
Future<OIDCConfiguration> getOIDCConfiguration(Uri baseUri, OIDCResponse oidcResponse);
Future<TokenOIDC> getTokenOIDC(String clientId, String redirectUrl, String discoveryUrl, List<String> scopes);
}
@@ -1,11 +1,13 @@
import 'package:core/core.dart';
import 'package:model/oidc/response/oidc_response.dart';
class CheckOIDCIsAvailableSuccess extends UIState {
final OIDCResponse oidcResponse;
CheckOIDCIsAvailableSuccess();
CheckOIDCIsAvailableSuccess(this.oidcResponse);
@override
List<Object> get props => [];
List<Object> get props => [oidcResponse];
}
class CheckOIDCIsAvailableFailure extends FeatureFailure {
@@ -13,9 +13,7 @@ class CheckOIDCIsAvailableInteractor {
try {
final result = await _oidcRepository.checkOIDCIsAvailable(oidcRequest);
log('CheckOIDCIsAvailableInteractor::execute(): result: $result');
return result
? Right<Failure, Success>(CheckOIDCIsAvailableSuccess())
: Left<Failure, Success>(CheckOIDCIsAvailableFailure(null));
return Right<Failure, Success>(CheckOIDCIsAvailableSuccess(result));
} catch (e) {
log('CheckOIDCIsAvailableInteractor::execute(): ERROR: $e');
return Left<Failure, Success>(CheckOIDCIsAvailableFailure(e));
@@ -1,5 +1,6 @@
import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/login/domain/repository/authentication_oidc_repository.dart';
import 'package:tmail_ui_user/features/login/domain/state/get_oidc_configuration_state.dart';
@@ -8,9 +9,9 @@ class GetOIDCConfigurationInteractor {
GetOIDCConfigurationInteractor(this._oidcRepository);
Future<Either<Failure, Success>> execute(Uri baseUri) async {
Future<Either<Failure, Success>> execute(Uri baseUri, OIDCResponse oidcResponse) async {
try {
final oidcConfiguration = await _oidcRepository.getOIDCConfiguration(baseUri);
final oidcConfiguration = await _oidcRepository.getOIDCConfiguration(baseUri, oidcResponse);
log('GetOIDCConfigurationInteractor::execute(): oidcConfiguration: $oidcConfiguration');
return Right<Failure, Success>(GetOIDCConfigurationSuccess(oidcConfiguration));
} catch (e) {