Skip to content

Commit d69ee34

Browse files
committed
fix: unicode breaks with atob
1 parent 8e71bdf commit d69ee34

File tree

4 files changed

+23
-25
lines changed

4 files changed

+23
-25
lines changed

lib/apis/ConnectedAppsApi.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ import {
3333

3434
export interface GetConnectedAppAuthUrlRequest {
3535
keyCodeRef: string;
36-
userId: string;
36+
userId?: string;
37+
orgCode?: string;
3738
}
3839

3940
export interface GetConnectedAppTokenRequest {
@@ -58,10 +59,6 @@ export class ConnectedAppsApi extends runtime.BaseAPI {
5859
throw new runtime.RequiredError('keyCodeRef','Required parameter requestParameters.keyCodeRef was null or undefined when calling getConnectedAppAuthUrl.');
5960
}
6061

61-
if (requestParameters.userId === null || requestParameters.userId === undefined) {
62-
throw new runtime.RequiredError('userId','Required parameter requestParameters.userId was null or undefined when calling getConnectedAppAuthUrl.');
63-
}
64-
6562
const queryParameters: any = {};
6663

6764
if (requestParameters.keyCodeRef !== undefined) {
@@ -72,6 +69,10 @@ export class ConnectedAppsApi extends runtime.BaseAPI {
7269
queryParameters['user_id'] = requestParameters.userId;
7370
}
7471

72+
if (requestParameters.orgCode !== undefined) {
73+
queryParameters['org_code'] = requestParameters.orgCode;
74+
}
75+
7576
const headerParameters: runtime.HTTPHeaders = {};
7677

7778
if (this.configuration && this.configuration.accessToken) {

lib/sdk/utilities/token-utils.ts

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,7 @@
1+
import { type JwtPayload, jwtDecode } from 'jwt-decode';
12
import type { TokenCollection, UserType, TokenType } from './types.js';
23
import { type SessionManager } from '../session-managers/index.js';
34

4-
/**
5-
* Parses a provided JWT token to extract the payload segment of said
6-
* token.
7-
* @param token {string}
8-
* @returns {any}
9-
*/
10-
const getTokenPayload = (token: string): any => {
11-
try {
12-
return JSON.parse(atob(token.split('.')[1]));
13-
} catch (e) {
14-
return null;
15-
}
16-
};
175

186
/**
197
* Extracts the payload from the provided idToken and saves the extracted
@@ -26,13 +14,13 @@ const commitUserToMemoryFromToken = async (
2614
sessionManager: SessionManager,
2715
idToken: string
2816
): Promise<void> => {
29-
const idTokenPayload = getTokenPayload(idToken);
17+
const idTokenPayload = jwtDecode<UserType&JwtPayload>(idToken);
3018
const user: UserType = {
3119
family_name: idTokenPayload.family_name,
3220
given_name: idTokenPayload.given_name,
3321
picture: idTokenPayload.picture ?? null,
3422
email: idTokenPayload.email,
35-
id: idTokenPayload.sub,
23+
id: idTokenPayload.sub!,
3624
};
3725

3826
await sessionManager.setSessionItem('user', user);
@@ -49,7 +37,7 @@ export const commitTokenToMemory = async (
4937
token: string,
5038
type: TokenType
5139
): Promise<void> => {
52-
const tokenPayload = getTokenPayload(token);
40+
const tokenPayload = jwtDecode(token);
5341
await sessionManager.setSessionItem(type, token);
5442
if (type === 'access_token') {
5543
await sessionManager.setSessionItem('access_token_payload', tokenPayload);
@@ -138,6 +126,6 @@ export const commitUserToMemory = async (
138126
export const isTokenExpired = (token: string | null): boolean => {
139127
if (!token) return true;
140128
const currentUnixTime = Math.floor(Date.now() / 1000);
141-
const tokenPayload = getTokenPayload(token);
142-
return currentUnixTime >= tokenPayload.exp;
129+
const tokenPayload = jwtDecode(token);
130+
return currentUnixTime >= tokenPayload.exp!;
143131
};

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@kinde-oss/kinde-typescript-sdk",
3-
"version": "2.2.3",
3+
"version": "2.2.4",
44
"description": "Kinde Typescript SDK",
55
"main": "dist-cjs/index.js",
66
"module": "dist/index.js",
@@ -15,7 +15,7 @@
1515
"types": "./dist-cjs/types/index.d.ts",
1616
"default": "./dist-cjs/index.js"
1717
},
18-
"import":{
18+
"import": {
1919
"types": "./dist/types/index.d.ts",
2020
"default": "./dist/index.js"
2121
}
@@ -70,6 +70,7 @@
7070
"typescript": "^5.0.4"
7171
},
7272
"dependencies": {
73+
"jwt-decode": "^4.0.0",
7374
"uncrypto": "^0.1.3"
7475
}
7576
}

pnpm-lock.yaml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)