TF-4049 Pre-fill OIDC login form
This commit is contained in:
@@ -8,7 +8,13 @@ abstract class AuthenticationOIDCRepository {
|
||||
|
||||
Future<OIDCDiscoveryResponse> discoverOIDC(OIDCConfiguration oidcConfiguration);
|
||||
|
||||
Future<TokenOIDC> getTokenOIDC(String clientId, String redirectUrl, String discoveryUrl, List<String> scopes);
|
||||
Future<TokenOIDC> getTokenOIDC(
|
||||
String clientId,
|
||||
String redirectUrl,
|
||||
String discoveryUrl,
|
||||
List<String> scopes, {
|
||||
String? loginHint,
|
||||
});
|
||||
|
||||
Future<void> persistTokenOIDC(TokenOIDC tokenOidc);
|
||||
|
||||
|
||||
@@ -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/response/oidc_response.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/model/base_url_oidc_response.dart';
|
||||
import 'package:tmail_ui_user/features/login/domain/repository/authentication_oidc_repository.dart';
|
||||
@@ -12,12 +13,20 @@ class GetOIDCConfigurationInteractor {
|
||||
|
||||
GetOIDCConfigurationInteractor(this._oidcRepository);
|
||||
|
||||
Stream<Either<Failure, Success>> execute(OIDCResponse oidcResponse) async* {
|
||||
Stream<Either<Failure, Success>> execute(
|
||||
OIDCResponse oidcResponse, {
|
||||
String? loginHint,
|
||||
}) async* {
|
||||
try {
|
||||
yield Right<Failure, Success>(GetOIDCConfigurationLoading());
|
||||
final oidcConfiguration = await _oidcRepository.getOIDCConfiguration(oidcResponse);
|
||||
await _oidcRepository.persistOidcConfiguration(oidcConfiguration);
|
||||
yield Right<Failure, Success>(GetOIDCConfigurationSuccess(oidcConfiguration));
|
||||
final configWithLoginHint = oidcConfiguration.copyWidth(
|
||||
loginHint: loginHint,
|
||||
);
|
||||
await _oidcRepository.persistOidcConfiguration(configWithLoginHint);
|
||||
yield Right<Failure, Success>(
|
||||
GetOIDCConfigurationSuccess(configWithLoginHint),
|
||||
);
|
||||
} catch (e) {
|
||||
logError('$runtimeType::execute():oidcResponse = ${oidcResponse.runtimeType} | Exception = $e');
|
||||
if (oidcResponse is BaseUrlOidcResponse) {
|
||||
|
||||
@@ -27,10 +27,12 @@ class GetTokenOIDCInteractor {
|
||||
try {
|
||||
yield Right<Failure, Success>(GetTokenOIDCLoading());
|
||||
final tokenOIDC = await authenticationOIDCRepository.getTokenOIDC(
|
||||
config.clientId,
|
||||
config.redirectUrl,
|
||||
config.discoveryUrl,
|
||||
config.scopes);
|
||||
config.clientId,
|
||||
config.redirectUrl,
|
||||
config.discoveryUrl,
|
||||
config.scopes,
|
||||
loginHint: config.loginHint,
|
||||
);
|
||||
|
||||
await Future.wait([
|
||||
_credentialRepository.saveBaseUrl(baseUri),
|
||||
|
||||
Reference in New Issue
Block a user