From 629ff565eedcfd7bca624980b345fff703ae8b8f Mon Sep 17 00:00:00 2001 From: Montassar Ghanmy Date: Mon, 4 Dec 2023 16:28:35 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Handle=20infinite=20loop=20from?= =?UTF-8?q?=20oidc=20=20(#282)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/app/features/auth/login-service.ts | 2 +- .../oidc/oidc-auth-provider-service.ts | 23 ++++++++++--------- .../features/global/services/init-service.ts | 16 ++++++++++--- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/tdrive/frontend/src/app/features/auth/login-service.ts b/tdrive/frontend/src/app/features/auth/login-service.ts index 4a002762..eea5a7dd 100755 --- a/tdrive/frontend/src/app/features/auth/login-service.ts +++ b/tdrive/frontend/src/app/features/auth/login-service.ts @@ -194,7 +194,7 @@ class Login extends Observable { } await this.updateUser(); } catch (err) { - this.logger.error('Can not login', err); + throw Error('Can not login'); } finally { this.logger.debug('Login process finished'); Login.logInOngoing = false; diff --git a/tdrive/frontend/src/app/features/auth/provider/oidc/oidc-auth-provider-service.ts b/tdrive/frontend/src/app/features/auth/provider/oidc/oidc-auth-provider-service.ts index 2339729e..81426f26 100644 --- a/tdrive/frontend/src/app/features/auth/provider/oidc/oidc-auth-provider-service.ts +++ b/tdrive/frontend/src/app/features/auth/provider/oidc/oidc-auth-provider-service.ts @@ -11,7 +11,7 @@ import { AuthProvider, InitParameters } from '../auth-provider'; import jwtStorageService, { JWTDataType } from '@features/auth/jwt-storage-service'; import LocalStorage from '@features/global/framework/local-storage-service'; import ConsoleApiClient from '@features/console/api/console-api-client'; -import JwtStorageService from "@features/auth/jwt-storage-service"; +import JwtStorageService from '@features/auth/jwt-storage-service'; const OIDC_CALLBACK_URL = '/oidccallback'; const OIDC_SIGNOUT_URL = '/signout'; @@ -70,15 +70,15 @@ export default class OIDCAuthProviderService this.signOut(); } - this.userManager.events.addUserSessionChanged((... args) => { + this.userManager.events.addUserSessionChanged((...args) => { this.logger.debug('User Session changed:', args); }); - this.userManager.events.addSilentRenewError((... args) => { + this.userManager.events.addSilentRenewError((...args) => { this.logger.debug('Silent Renew Error:', args); }); - this.userManager.events.addUserUnloaded((... args) => { + this.userManager.events.addUserUnloaded((...args) => { this.logger.debug('User unloaded:', args); }); @@ -97,7 +97,7 @@ export default class OIDCAuthProviderService await this.signIn(); }); } - this.logger.info("Init completed") + this.logger.info('Init completed'); return this; } @@ -119,14 +119,14 @@ export default class OIDCAuthProviderService this.onInitialized(); this.initialized = true; } - this.logger.info("Setting new access token"); + this.logger.info('Setting new access token'); await this.params?.onNewToken(jwt); } catch (err) { this.logger.error( 'OIDC user loaded listener, error while getting the JWT from OIDC token', err, ); - await this.signinRedirect(); + throw Error('Error while getting the JWT from OIDC token'); } } else { await this.signinRedirect(); @@ -173,11 +173,12 @@ export default class OIDCAuthProviderService this.logger.info('getJWTFromOidcToken, user expired'); } - const jwt = await ConsoleApiClient.getNewAccessToken( - { id_token: user.id_token, access_token: user.access_token }, - ); + const jwt = await ConsoleApiClient.getNewAccessToken({ + id_token: user.id_token, + access_token: user.access_token, + }); - JwtStorageService.updateJWT(jwt) + JwtStorageService.updateJWT(jwt); return jwt; } diff --git a/tdrive/frontend/src/app/features/global/services/init-service.ts b/tdrive/frontend/src/app/features/global/services/init-service.ts index 1d9a1833..13a697a0 100644 --- a/tdrive/frontend/src/app/features/global/services/init-service.ts +++ b/tdrive/frontend/src/app/features/global/services/init-service.ts @@ -76,9 +76,19 @@ class InitService extends Observable { } async getServer() { - return await Api.get('/internal/services/general/v1/server', undefined, false, { - disableJWTAuthentication: true, - }); + try { + return await Api.get( + '/internal/services/general/v1/server', + undefined, + false, + { + disableJWTAuthentication: true, + }, + ); + } catch (e) { + this.logger.error('Error while getting server infos', e); + throw e; + } } async init() {