Skip to content

Commit

Permalink
chore(console): update custom JWT scripts sample
Browse files Browse the repository at this point in the history
  • Loading branch information
darcyYe committed Apr 18, 2024
1 parent 841063d commit 1c96f33
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 56 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ function InstructionTab({ isActive }: Props) {
language="typescript"
className={styles.sampleCode}
value={environmentVariablesCodeExample}
path="file:///env-variables-sample.js"
height="400px"
theme="logto-dark"
options={sampleCodeEditorOptions}
Expand Down
86 changes: 30 additions & 56 deletions packages/console/src/pages/CustomizeJwtDetails/utils/config.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,84 +20,58 @@ import {
* JWT token code editor configuration
*/
const accessTokenJwtCustomizerDefinition = `
declare global {
export interface CustomJwtClaims extends Record<string, any> {}
declare interface CustomJwtClaims extends Record<string, any> {}
/** Logto internal data that can be used to pass additional information
* @param {${JwtCustomizerTypeDefinitionKey.JwtCustomizerUserContext}} user - The user info associated with the token.
*/
export type Data = {
user: ${JwtCustomizerTypeDefinitionKey.JwtCustomizerUserContext};
}
export interface Exports {
/**
* This function is called during the access token generation process to get custom claims for the JWT token.
*
* @param {${JwtCustomizerTypeDefinitionKey.AccessTokenPayload}} token -The JWT token.
* @param {Data} data - Logto internal data that can be used to pass additional information
* @param {${JwtCustomizerTypeDefinitionKey.JwtCustomizerUserContext}} data.user - The user info associated with the token.
* @param {${JwtCustomizerTypeDefinitionKey.EnvironmentVariables}} envVariables - The environment variables.
*
* @returns The custom claims.
*/
getCustomJwtClaims: (token: ${JwtCustomizerTypeDefinitionKey.AccessTokenPayload}, data: Data, envVariables: ${JwtCustomizerTypeDefinitionKey.EnvironmentVariables}) => Promise<CustomJwtClaims>;
}
const exports: Exports;
/** Logto internal data that can be used to pass additional information
* @param {${JwtCustomizerTypeDefinitionKey.JwtCustomizerUserContext}} user - The user info associated with the token.
*/
declare type Context = {
user: ${JwtCustomizerTypeDefinitionKey.JwtCustomizerUserContext};
}
export { exports as default };
`;
declare type Payload = {
token: ${JwtCustomizerTypeDefinitionKey.AccessTokenPayload};
context: Context;
environmentVariables: ${JwtCustomizerTypeDefinitionKey.EnvironmentVariables};
};`;

const clientCredentialsJwtCustomizerDefinition = `
declare global {
export interface CustomJwtClaims extends Record<string, any> {}
declare interface CustomJwtClaims extends Record<string, any> {}
export interface Exports {
/**
* This function is called during the access token generation process to get custom claims for the JWT token.
*
* @param {${JwtCustomizerTypeDefinitionKey.ClientCredentialsPayload}} token -The JWT token.
*
* @returns The custom claims.
*/
getCustomJwtClaims: (token: ${JwtCustomizerTypeDefinitionKey.ClientCredentialsPayload}, envVariables: ${JwtCustomizerTypeDefinitionKey.EnvironmentVariables}) => Promise<CustomJwtClaims>;
}
const exports: Exports;
}
export { exports as default };
`;
declare type Payload = {
token: ${JwtCustomizerTypeDefinitionKey.AccessTokenPayload};
environmentVariables: ${JwtCustomizerTypeDefinitionKey.EnvironmentVariables};
};`;

export const defaultAccessTokenJwtCustomizerCode = `/**
* This function is called during the access token generation process to get custom claims for the JWT token.
* Limit custom claims to under 50KB.
*
* @param {${JwtCustomizerTypeDefinitionKey.AccessTokenPayload}} token -The JWT token.
* @param {Data} data - Logto internal data that can be used to pass additional information
* @param {${JwtCustomizerTypeDefinitionKey.JwtCustomizerUserContext}} data.user - The user info associated with the token.
* @param {${JwtCustomizerTypeDefinitionKey.EnvironmentVariables}} [envVariables] - The environment variables.
*
* @param {Payload} payload - The input payload of the function.
* @param {${JwtCustomizerTypeDefinitionKey.AccessTokenPayload}} payload.token -The JWT token.
* @param {Context} payload.context - Logto internal data that can be used to pass additional information
* @param {${JwtCustomizerTypeDefinitionKey.JwtCustomizerUserContext}} payload.context.user - The user info associated with the token.
* @param {${JwtCustomizerTypeDefinitionKey.EnvironmentVariables}} [payload.environmentVariables] - The environment variables.
*
* @returns The custom claims.
*/
exports.getCustomJwtClaims = async (token, data, envVariables) => {
const getCustomJwtClaims = async ({ token, context, environmentVariables }) => {
return {};
}`;

export const defaultClientCredentialsJwtCustomizerCode = `/**
* This function is called during the access token generation process to get custom claims for the JWT token.
* Limit custom claims to under 50KB.
*
* @param {${JwtCustomizerTypeDefinitionKey.ClientCredentialsPayload}} token -The JWT token.
* @param {${JwtCustomizerTypeDefinitionKey.EnvironmentVariables}} [envVariables] - The environment variables.
* @param {Payload} payload - The input payload of the function.
* @param {${JwtCustomizerTypeDefinitionKey.ClientCredentialsPayload}} payload.token -The JWT token.
* @param {${JwtCustomizerTypeDefinitionKey.EnvironmentVariables}} [payload.environmentVariables] - The environment variables.
*
* @returns The custom claims.
*/
exports.getCustomJwtClaims = async (token, envVariables) => {
const getCustomJwtClaims = async ({ token, environmentVariables }) => {
return {};
}`;

Expand Down Expand Up @@ -170,15 +144,15 @@ return {
externalData: data,
};`;

export const environmentVariablesCodeExample = `exports.getCustomJwtClaims = async (token, data, envVariables) => {
const { apiKey } = envVariables;
export const environmentVariablesCodeExample = `const getCustomJwtClaimsSample = async ({ environmentVariables }) => {
const { apiKey } = environmentVariables;
const response = await fetch('https://api.example.com/data', {
headers: {
Authorization: apiKey,
}
});
const data = await response.json();
return {
Expand Down

0 comments on commit 1c96f33

Please sign in to comment.