@mikandev/next-discord-auth
Version:
Discord OAuth for Next.js that doesn't suck
36 lines (35 loc) • 1.34 kB
JavaScript
let globalConfig = null;
export function setup(config) {
if (!config || !config.redirectUri || !config.jwtSecret) {
throw new Error("Invalid configuration. 'redirectUri' and 'jwtSecret' are required.");
}
if (!config.clientId || !config.clientSecret) {
if (!process.env.AUTH_DISCORD_ID || !process.env.AUTH_DISCORD_SECRET) {
throw new Error("You must provide 'clientId' and 'clientSecret' in the config or set them as environment variables AUTH_DISCORD_ID and AUTH_DISCORD_SECRET.");
}
}
if (globalConfig) {
console.warn("Global config is already set. Overwriting existing config.");
}
globalConfig = {
clientId: config.clientId ??
process.env.AUTH_DISCORD_ID ??
(() => {
throw new Error("clientId is required");
})(),
clientSecret: config.clientSecret ??
process.env.AUTH_DISCORD_SECRET ??
(() => {
throw new Error("clientSecret is required");
})(),
scopes: config.scopes ?? ["identify", "email"],
redirectUri: config.redirectUri,
jwtSecret: config.jwtSecret,
};
}
export function getGlobalConfig() {
if (!globalConfig) {
throw new Error("Global config has not been set.");
}
return globalConfig;
}