Skip to content

Commit 3115040

Browse files
committed
feat(nextjs): expose token APIs via AsgardeoContext
expose getIdToken, getDecodedIdToken, getAccessToken, and exchangeToken methods through AsgardeoContext in the Next.js SDK.
1 parent dc99542 commit 3115040

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

packages/nextjs/src/client/contexts/Asgardeo/AsgardeoContext.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
'use client';
2020

2121
import {AsgardeoContextProps as AsgardeoReactContextProps} from '@asgardeo/react';
22-
import {EmbeddedFlowExecuteRequestConfig, EmbeddedSignInFlowHandleRequestPayload, User} from '@asgardeo/node';
22+
import {EmbeddedFlowExecuteRequestConfig, EmbeddedSignInFlowHandleRequestPayload, User, TokenExchangeRequestConfig, TokenResponse, IdToken} from '@asgardeo/node';
2323
import {Context, createContext} from 'react';
2424

2525
/**
@@ -44,6 +44,10 @@ const AsgardeoContext: Context<AsgardeoContextProps | null> = createContext<null
4444
signOut: () => Promise.resolve({} as any),
4545
signUp: () => Promise.resolve({} as any),
4646
user: null,
47+
getDecodedIdToken: async (sessionId?:string) => Promise.resolve({} as IdToken),
48+
getIdToken: async (sessionId?:string) => Promise.resolve(''),
49+
getAccessToken: async (sessionId?:string) => Promise.resolve(''),
50+
exchangeToken: async (config: TokenExchangeRequestConfig, sessionId?:string) => Promise.resolve({} as TokenResponse | Response),
4751
});
4852

4953
AsgardeoContext.displayName = 'AsgardeoContext';

packages/nextjs/src/client/contexts/Asgardeo/AsgardeoProvider.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ export type AsgardeoClientProviderProps = Partial<Omit<AsgardeoProviderProps, 'b
7777
) => Promise<{data: {user: User}; error: string; success: boolean}>;
7878
user: User | null;
7979
userProfile: UserProfile;
80+
getIdToken: AsgardeoContextProps['getIdToken'];
81+
getDecodedIdToken: AsgardeoContextProps['getDecodedIdToken'];
82+
getAccessToken: AsgardeoContextProps['getAccessToken'];
83+
exchangeToken: AsgardeoContextProps['exchangeToken'];
8084
};
8185

8286
const AsgardeoClientProvider: FC<PropsWithChildren<AsgardeoClientProviderProps>> = ({
@@ -102,6 +106,10 @@ const AsgardeoClientProvider: FC<PropsWithChildren<AsgardeoClientProviderProps>>
102106
getAllOrganizations,
103107
switchOrganization,
104108
brandingPreference,
109+
getIdToken,
110+
getDecodedIdToken,
111+
getAccessToken,
112+
exchangeToken,
105113
}: PropsWithChildren<AsgardeoClientProviderProps>) => {
106114
const reRenderCheckRef: RefObject<boolean> = useRef(false);
107115
const router = useRouter();
@@ -309,8 +317,12 @@ const AsgardeoClientProvider: FC<PropsWithChildren<AsgardeoClientProviderProps>>
309317
signUpUrl,
310318
applicationId,
311319
organizationHandle,
320+
getIdToken,
321+
getDecodedIdToken,
322+
getAccessToken,
323+
exchangeToken,
312324
}),
313-
[baseUrl, user, isSignedIn, isLoading, signInUrl, signUpUrl, applicationId, organizationHandle],
325+
[baseUrl, user, isSignedIn, isLoading, signInUrl, signUpUrl, applicationId, organizationHandle, getIdToken, getDecodedIdToken, getAccessToken, exchangeToken],
314326
);
315327

316328
const handleProfileUpdate = (payload: User): void => {

packages/nextjs/src/server/AsgardeoProvider.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,10 @@ const AsgardeoServerProvider: FC<PropsWithChildren<AsgardeoServerProviderProps>>
194194
switchOrganization={switchOrganization}
195195
brandingPreference={brandingPreference}
196196
createOrganization={createOrganization}
197+
getDecodedIdToken={async () => await asgardeoClient.getDecodedIdToken(sessionId)}
198+
getIdToken={async () => await asgardeoClient.getIdToken(sessionId)}
199+
getAccessToken={async () => await asgardeoClient.getAccessToken(sessionId)}
200+
exchangeToken={async (config) => await asgardeoClient.exchangeToken(config, sessionId)}
197201
>
198202
{children}
199203
</AsgardeoClientProvider>

0 commit comments

Comments
 (0)