TF-4145 Implement get oidc user_info from endpoint of oidc configuration
This commit is contained in:
@@ -46,4 +46,6 @@ abstract class AuthenticationOIDCDataSource {
|
||||
Future<String> getAuthenticationInfo();
|
||||
|
||||
Future<void> removeAuthDestinationUrl();
|
||||
|
||||
Future<OidcUserInfo> fetchUserInfo(String userInfoEndpoint);
|
||||
}
|
||||
@@ -2,6 +2,7 @@ import 'package:model/oidc/oidc_configuration.dart';
|
||||
import 'package:model/oidc/request/oidc_request.dart';
|
||||
import 'package:model/oidc/response/oidc_discovery_response.dart';
|
||||
import 'package:model/oidc/response/oidc_response.dart';
|
||||
import 'package:model/oidc/response/oidc_user_info.dart';
|
||||
import 'package:model/oidc/token_id.dart';
|
||||
import 'package:model/oidc/token_oidc.dart';
|
||||
import 'package:tmail_ui_user/features/caching/utils/session_storage_manager.dart';
|
||||
@@ -174,4 +175,14 @@ class AuthenticationOIDCDataSourceImpl extends AuthenticationOIDCDataSource {
|
||||
);
|
||||
}).catchError(_cacheExceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<OidcUserInfo> fetchUserInfo(String userInfoEndpoint) {
|
||||
return Future.sync(() async {
|
||||
return await _oidcHttpClient.fetchUserInfo(userInfoEndpoint);
|
||||
}).catchError((error, stackTrace) async {
|
||||
await _exceptionThrower.throwException(error, stackTrace);
|
||||
throw error;
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -4,4 +4,6 @@ class CanNotFoundOIDCLinks implements Exception {}
|
||||
|
||||
class CanNotFindToken implements Exception {}
|
||||
|
||||
class CanRetryOIDCException implements Exception {}
|
||||
class CanRetryOIDCException implements Exception {}
|
||||
|
||||
class NotFoundUserInfoEndpointException implements Exception {}
|
||||
@@ -10,6 +10,7 @@ import 'package:model/oidc/oidc_configuration.dart';
|
||||
import 'package:model/oidc/request/oidc_request.dart';
|
||||
import 'package:model/oidc/response/oidc_discovery_response.dart';
|
||||
import 'package:model/oidc/response/oidc_response.dart';
|
||||
import 'package:model/oidc/response/oidc_user_info.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/extensions/service_path_extension.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/network/config/oidc_constant.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/network/endpoint.dart';
|
||||
@@ -84,4 +85,14 @@ class OIDCHttpClient {
|
||||
return OIDCDiscoveryResponse.fromJson(jsonDecode(result));
|
||||
}
|
||||
}
|
||||
|
||||
Future<OidcUserInfo> fetchUserInfo(String userInfoEndpoint) async {
|
||||
final result = await _dioClient.get(userInfoEndpoint);
|
||||
|
||||
if (result is Map<String, dynamic>) {
|
||||
return OidcUserInfo.fromJson(result);
|
||||
} else {
|
||||
return OidcUserInfo.fromJson(jsonDecode(result));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ import 'package:model/oidc/oidc_configuration.dart';
|
||||
import 'package:model/oidc/request/oidc_request.dart';
|
||||
import 'package:model/oidc/response/oidc_discovery_response.dart';
|
||||
import 'package:model/oidc/response/oidc_response.dart';
|
||||
import 'package:model/oidc/response/oidc_user_info.dart';
|
||||
import 'package:model/oidc/token_id.dart';
|
||||
import 'package:model/oidc/token_oidc.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/datasource/authentication_oidc_datasource.dart';
|
||||
@@ -110,4 +111,9 @@ class AuthenticationOIDCRepositoryImpl extends AuthenticationOIDCRepository {
|
||||
Future<void> removeAuthDestinationUrl() {
|
||||
return _oidcDataSource.removeAuthDestinationUrl();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<OidcUserInfo> fetchUserInfo(String userInfoEndpoint) {
|
||||
return _oidcDataSource.fetchUserInfo(userInfoEndpoint);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user