28 lines
811 B
TypeScript
28 lines
811 B
TypeScript
import { getExpirationInSeconds } from "#lib/utils";
|
|
import { validateJWTConfig } from "#lib/validation";
|
|
|
|
import type { JWTConfig } from "#types/config";
|
|
|
|
function createJWTConfig(): JWTConfig {
|
|
const jwtSecret = process.env.JWT_SECRET || "";
|
|
const jwtExpiration = process.env.JWT_EXPIRATION || "1h";
|
|
const jwtIssuer = process.env.JWT_ISSUER || "";
|
|
const jwtAlgorithm = process.env.JWT_ALGORITHM || "HS256";
|
|
|
|
const configForValidation: JWTConfig = {
|
|
secret: jwtSecret,
|
|
expiration: getExpirationInSeconds(jwtExpiration),
|
|
issuer: jwtIssuer,
|
|
algorithm: jwtAlgorithm,
|
|
};
|
|
|
|
const validation = validateJWTConfig(configForValidation);
|
|
|
|
if (!validation.valid) {
|
|
throw new Error(`JWT Configuration Error: ${validation.error}`);
|
|
}
|
|
|
|
return configForValidation;
|
|
}
|
|
|
|
export const jwt = createJWTConfig();
|