export interface VerifyGatewayTokenResult {
payload: JWTPayload;
claims: GatewayTokenClaims;
}
export const verifyGatewayToken = async (
token: string,
secret: string,
options: VerifyGatewayTokenOptions = {}
): Promise<VerifyGatewayTokenResult> => {
const { payload } = await jwtVerify(token, secretToKey(secret), {
issuer: options.issuer ?? DEFAULT_ISSUER,
audience: options.audience ?? DEFAULT_AUDIENCE,
...options,
});
return {
payload,
claims: GatewayTokenClaimsSchema.parse({
projectId: payload.projectId,
route: payload.route,
scopes: payload.scopes ?? [],
environment: payload.environment ?? 'production',
issuedBy: payload.issuedBy ?? DEFAULT_ISSUER,
}),
};
};