TF-607 Implement logoutOidc action when user click signOut

This commit is contained in:
dab246
2022-06-03 11:34:18 +07:00
committed by Dat H. Pham
parent 45fbbc6a6f
commit ced3fecd1f
16 changed files with 184 additions and 20 deletions
@@ -51,6 +51,8 @@ class AuthorizationInterceptors extends InterceptorsWrapper {
OIDCConfiguration? get oidcConfig => _configOIDC;
AuthenticationType get authenticationType => _authenticationType;
@override
void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
switch(_authenticationType) {
@@ -8,6 +8,7 @@ import 'package:flutter_appauth/flutter_appauth.dart';
import 'package:model/oidc/oidc_configuration.dart';
import 'package:model/oidc/request/oidc_request.dart';
import 'package:model/oidc/response/oidc_response.dart';
import 'package:model/oidc/token_id.dart';
import 'package:model/oidc/token_oidc.dart';
import 'package:tmail_ui_user/features/login/data/extensions/authentication_token_extension.dart';
import 'package:tmail_ui_user/features/login/data/extensions/service_path_extension.dart';
@@ -98,4 +99,14 @@ class OIDCHttpClient {
throw NotFoundAccessTokenException();
}
}
Future<bool> logoutOidc(TokenId tokenId, OIDCConfiguration config) async {
final endSession = await _appAuth.endSession(EndSessionRequest(
idTokenHint: tokenId.uuid,
postLogoutRedirectUrl: config.redirectUrl,
discoveryUrl: config.discoveryUrl
));
log('OIDCHttpClient::logoutOidc(): ${endSession?.state}');
return endSession?.state?.isNotEmpty == true;
}
}