kitcn
Version:
kitcn - React Query integration and CLI tools for Convex
24 lines (23 loc) • 922 B
JavaScript
//#region src/auth/auth-config.ts
const createPublicJwks = (jwks, options) => {
const keyPairConfig = options?.jwks?.keyPairConfig;
const defaultCrv = keyPairConfig && "crv" in keyPairConfig ? keyPairConfig.crv : void 0;
return { keys: jwks.map((keySet) => ({
alg: keySet.alg ?? options?.jwks?.keyPairConfig?.alg ?? "EdDSA",
crv: keySet.crv ?? defaultCrv,
...JSON.parse(keySet.publicKey),
kid: keySet.id
})) };
};
const getAuthConfigProvider = (opts) => {
const parsedJwks = opts?.jwks ? JSON.parse(opts.jwks) : void 0;
return {
type: "customJwt",
issuer: `${process.env.CONVEX_SITE_URL}`,
applicationID: "convex",
algorithm: "RS256",
jwks: parsedJwks ? `data:text/plain;charset=utf-8;base64,${btoa(JSON.stringify(createPublicJwks(parsedJwks)))}` : `${process.env.CONVEX_SITE_URL}${opts?.basePath ?? "/api/auth"}/convex/jwks`
};
};
//#endregion
export { createPublicJwks, getAuthConfigProvider };