Skip to content

Commit

Permalink
feat: added custom token store support
Browse files Browse the repository at this point in the history
  • Loading branch information
DanielRivers committed Mar 18, 2024
1 parent 6ebd18d commit d37eaf8
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 6 deletions.
7 changes: 7 additions & 0 deletions lib/utilities/config.ts → lib/config.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
export interface TokenStore {
getToken(): Promise<string>;
setToken(tokens: string): Promise<void>;
clearToken(): Promise<void>;
}

export const kindeConfig: {
clientId: string;
clientSecret: string;
kinde_domain: string;
audience: string;
token: string;
tokenStore?: TokenStore;
} = {
clientId: "client_id",
clientSecret: "client",
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion lib/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export * from "./api/index";
export * from "./utilities/index";

import { OpenAPI } from "./api/index";
import { kindeConfig } from "./utilities/config";
import { kindeConfig } from "./config";
import { getToken } from "./utilities/getToken";

if (!process.env.KINDE_DOMAIN) {
Expand Down
11 changes: 8 additions & 3 deletions lib/utilities/getToken.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as constants from "./constants";
import * as constants from "../constants";
import { setToken } from "./setToken";
import { jwtDecode } from "./jwt-decode";
import { kindeConfig } from "./config";
import { kindeConfig } from "../config";
import { OpenAPI } from "../api";
import { LIB_VERSION } from "../version";

Expand All @@ -10,7 +10,12 @@ import { LIB_VERSION } from "../version";
* @param token - The token to be used for requests
*/
export const getToken = async (): Promise<string> => {
if (kindeConfig.token) {
let token: string = "";
if (kindeConfig.tokenStore?.getToken) {
token = await kindeConfig.tokenStore.getToken();
}

if (kindeConfig.token || token) {
const decoded = jwtDecode(kindeConfig.token);
if (decoded.exp && decoded.exp * 1000 > Date.now()) {
return kindeConfig.token;
Expand Down
3 changes: 2 additions & 1 deletion lib/utilities/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { setToken } from "./setToken";
import { getToken } from "./getToken";
import { jwtDecode } from "./jwt-decode";

export { setToken, getToken };
export { setToken, getToken, jwtDecode };
6 changes: 5 additions & 1 deletion lib/utilities/setToken.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
import { kindeConfig } from "./config";
import { kindeConfig } from "../config";

/**
* Set the token to be used for requests
* @param token - The token to be used for requests
*/
export const setToken = (token: string) => {
if (kindeConfig.tokenStore?.setToken) {
kindeConfig.tokenStore.setToken(token);
return;
}
kindeConfig.token = token;
};

0 comments on commit d37eaf8

Please sign in to comment.