From 0ea4b05bcd3ae22d86af052ec94141235117d013 Mon Sep 17 00:00:00 2001 From: savindi7 Date: Wed, 13 Mar 2024 17:23:19 +0530 Subject: [PATCH] Support additional params in trySignInSilently URL --- lib/src/client.ts | 6 ++++-- lib/src/clients/main-thread-client.ts | 14 ++++++++++---- lib/src/clients/web-worker-client.ts | 14 ++++++++++---- lib/src/helpers/authentication-helper.ts | 7 ++++--- lib/src/models/client.ts | 4 ++-- 5 files changed, 30 insertions(+), 15 deletions(-) diff --git a/lib/src/client.ts b/lib/src/client.ts index 80f8912c..8a60a584 100755 --- a/lib/src/client.ts +++ b/lib/src/client.ts @@ -408,7 +408,9 @@ export class AsgardeoSPAClient { * auth.trySignInSilently() *``` */ - public async trySignInSilently(): Promise { + public async trySignInSilently( + additionalParams?: Record + ): Promise { await this._isInitialized(); // checks if the `signIn` method has been called. @@ -416,7 +418,7 @@ export class AsgardeoSPAClient { return; } - return this._client?.trySignInSilently().then((response: BasicUserInfo | boolean) => { + return this._client?.trySignInSilently(additionalParams).then((response: BasicUserInfo | boolean) => { if (this._onSignInCallback && response) { const basicUserInfo = response as BasicUserInfo; if ( diff --git a/lib/src/clients/main-thread-client.ts b/lib/src/clients/main-thread-client.ts index 504758fc..caa0df54 100755 --- a/lib/src/clients/main-thread-client.ts +++ b/lib/src/clients/main-thread-client.ts @@ -315,11 +315,14 @@ export const MainThreadClient = async ( ); }; - const constructSilentSignInUrl = async (): Promise => { + const constructSilentSignInUrl = async ( + additionalParams: Record = {} + ): Promise => { const config = await _dataLayer.getConfigData(); const urlString: string = await _authenticationClient.getAuthorizationURL({ prompt: "none", - state: SILENT_SIGN_IN_STATE + state: SILENT_SIGN_IN_STATE, + ...additionalParams }); // Replace form_post with query @@ -346,12 +349,15 @@ export const MainThreadClient = async ( * @return {Promise => { + const trySignInSilently = async ( + additionalParams: Record = {} + ): Promise => { return await _authenticationHelper.trySignInSilently( constructSilentSignInUrl, requestAccessToken, - _sessionManagementHelper + _sessionManagementHelper, + additionalParams ); }; diff --git a/lib/src/clients/web-worker-client.ts b/lib/src/clients/web-worker-client.ts index 0d6b791a..f36fe8e0 100755 --- a/lib/src/clients/web-worker-client.ts +++ b/lib/src/clients/web-worker-client.ts @@ -392,12 +392,15 @@ export const WebWorkerClient = async ( ); }; - const constructSilentSignInUrl = async (): Promise => { + const constructSilentSignInUrl = async ( + additionalParams: Record = {} + ): Promise => { const config: AuthClientConfig = await getConfigData(); const message: Message = { data: { prompt: "none", - state: SILENT_SIGN_IN_STATE + state: SILENT_SIGN_IN_STATE, + ...additionalParams }, type: GET_AUTH_URL }; @@ -427,11 +430,14 @@ export const WebWorkerClient = async ( * @return {Promise => { + const trySignInSilently = async ( + additionalParams: Record = {} + ): Promise => { return await _authenticationHelper.trySignInSilently( constructSilentSignInUrl, requestAccessToken, - _sessionManagementHelper + _sessionManagementHelper, + additionalParams ); }; diff --git a/lib/src/helpers/authentication-helper.ts b/lib/src/helpers/authentication-helper.ts index 569fcf4e..09cb1fc3 100644 --- a/lib/src/helpers/authentication-helper.ts +++ b/lib/src/helpers/authentication-helper.ts @@ -489,9 +489,10 @@ export class AuthenticationHelper< } public async trySignInSilently( - constructSilentSignInUrl: () => Promise, + constructSilentSignInUrl: (additionalParams?: Record) => Promise, requestAccessToken: (authzCode: string, sessionState: string, state: string) => Promise, - sessionManagementHelper: SessionManagementHelperInterface + sessionManagementHelper: SessionManagementHelperInterface, + additionalParams?: Record ): Promise { // This block is executed by the iFrame when the server redirects with the authorization code. @@ -517,7 +518,7 @@ export class AuthenticationHelper< ) as HTMLIFrameElement; try { - const url = await constructSilentSignInUrl(); + const url = await constructSilentSignInUrl(additionalParams); promptNoneIFrame.src = url; } catch (error) { diff --git a/lib/src/models/client.ts b/lib/src/models/client.ts index cc542ec8..424a9864 100755 --- a/lib/src/models/client.ts +++ b/lib/src/models/client.ts @@ -65,7 +65,7 @@ export interface MainThreadClientInterface { getDataLayer(): Promise>; isAuthenticated(): Promise; updateConfig(config: Partial>): Promise; - trySignInSilently(): Promise; + trySignInSilently(additionalParams?: Record): Promise; isSessionActive(): Promise; } @@ -97,5 +97,5 @@ export interface WebWorkerClientInterface { setHttpRequestFinishCallback(callback: () => void): void; refreshAccessToken(): Promise; updateConfig(config: Partial>): Promise; - trySignInSilently(): Promise; + trySignInSilently(additionalParams?: Record): Promise; }