Skip to content

Commit

Permalink
Support additional params in trySignInSilently URL
Browse files Browse the repository at this point in the history
  • Loading branch information
savindi7 committed Mar 13, 2024
1 parent ab253fe commit 0ea4b05
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 15 deletions.
6 changes: 4 additions & 2 deletions lib/src/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -408,15 +408,17 @@ export class AsgardeoSPAClient {
* auth.trySignInSilently()
*```
*/
public async trySignInSilently(): Promise<BasicUserInfo | boolean | undefined> {
public async trySignInSilently(
additionalParams?: Record<string, string | boolean>
): Promise<BasicUserInfo | boolean | undefined> {
await this._isInitialized();

// checks if the `signIn` method has been called.
if (SPAUtils.wasSignInCalled()) {
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 (
Expand Down
14 changes: 10 additions & 4 deletions lib/src/clients/main-thread-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -315,11 +315,14 @@ export const MainThreadClient = async (
);
};

const constructSilentSignInUrl = async (): Promise<string> => {
const constructSilentSignInUrl = async (
additionalParams: Record<string, string | boolean> = {}
): Promise<string> => {
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
Expand All @@ -346,12 +349,15 @@ export const MainThreadClient = async (
* @return {Promise<BasicUserInfo|boolean} Returns a Promise that resolves with the BasicUserInfo
* if the user is signed in or with `false` if there is no active user session in the server.
*/
const trySignInSilently = async (): Promise<BasicUserInfo | boolean> => {
const trySignInSilently = async (
additionalParams: Record<string, string | boolean> = {}
): Promise<BasicUserInfo | boolean> => {

return await _authenticationHelper.trySignInSilently(
constructSilentSignInUrl,
requestAccessToken,
_sessionManagementHelper
_sessionManagementHelper,
additionalParams
);
};

Expand Down
14 changes: 10 additions & 4 deletions lib/src/clients/web-worker-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -392,12 +392,15 @@ export const WebWorkerClient = async (
);
};

const constructSilentSignInUrl = async (): Promise<string> => {
const constructSilentSignInUrl = async (
additionalParams: Record<string, string | boolean> = {}
): Promise<string> => {
const config: AuthClientConfig<WebWorkerClientConfig> = await getConfigData();
const message: Message<GetAuthURLConfig> = {
data: {
prompt: "none",
state: SILENT_SIGN_IN_STATE
state: SILENT_SIGN_IN_STATE,
...additionalParams
},
type: GET_AUTH_URL
};
Expand Down Expand Up @@ -427,11 +430,14 @@ export const WebWorkerClient = async (
* @return {Promise<BasicUserInfo|boolean} Returns a Promise that resolves with the BasicUserInfo
* if the user is signed in or with `false` if there is no active user session in the server.
*/
const trySignInSilently = async (): Promise<BasicUserInfo | boolean> => {
const trySignInSilently = async (
additionalParams: Record<string, string | boolean> = {}
): Promise<BasicUserInfo | boolean> => {
return await _authenticationHelper.trySignInSilently(
constructSilentSignInUrl,
requestAccessToken,
_sessionManagementHelper
_sessionManagementHelper,
additionalParams
);
};

Expand Down
7 changes: 4 additions & 3 deletions lib/src/helpers/authentication-helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -489,9 +489,10 @@ export class AuthenticationHelper<
}

public async trySignInSilently(
constructSilentSignInUrl: () => Promise<string>,
constructSilentSignInUrl: (additionalParams?: Record<string, string | boolean>) => Promise<string>,
requestAccessToken: (authzCode: string, sessionState: string, state: string) => Promise<BasicUserInfo>,
sessionManagementHelper: SessionManagementHelperInterface
sessionManagementHelper: SessionManagementHelperInterface,
additionalParams?: Record<string, string | boolean>
): Promise<BasicUserInfo | boolean> {

// This block is executed by the iFrame when the server redirects with the authorization code.
Expand All @@ -517,7 +518,7 @@ export class AuthenticationHelper<
) as HTMLIFrameElement;

try {
const url = await constructSilentSignInUrl();
const url = await constructSilentSignInUrl(additionalParams);

promptNoneIFrame.src = url;
} catch (error) {
Expand Down
4 changes: 2 additions & 2 deletions lib/src/models/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export interface MainThreadClientInterface {
getDataLayer(): Promise<DataLayer<MainThreadClientConfig>>;
isAuthenticated(): Promise<boolean>;
updateConfig(config: Partial<AuthClientConfig<MainThreadClientConfig>>): Promise<void>;
trySignInSilently(): Promise<BasicUserInfo | boolean>;
trySignInSilently(additionalParams?: Record<string, string | boolean>): Promise<BasicUserInfo | boolean>;
isSessionActive(): Promise<boolean>;
}

Expand Down Expand Up @@ -97,5 +97,5 @@ export interface WebWorkerClientInterface {
setHttpRequestFinishCallback(callback: () => void): void;
refreshAccessToken(): Promise<BasicUserInfo>;
updateConfig(config: Partial<AuthClientConfig<WebWorkerClientConfig>>): Promise<void>;
trySignInSilently(): Promise<BasicUserInfo | boolean>;
trySignInSilently(additionalParams?: Record<string, string | boolean>): Promise<BasicUserInfo | boolean>;
}

0 comments on commit 0ea4b05

Please sign in to comment.