Fix: defer env var reading to request time (ES module hoisting bug)

This commit is contained in:
The Howling Whispers 2026-06-30 17:39:21 +02:00
parent ba4f9f7377
commit 748cf8cb4c
2 changed files with 28 additions and 9 deletions

View File

@ -19,7 +19,18 @@ app.use(express.static(path.join(__dirname, 'public')));
app.use('/auth', discordRoutes); app.use('/auth', discordRoutes);
app.get('/health', (req, res) => { app.get('/health', (req, res) => {
res.json({ status: 'ok', service: 'thw-auth', timestamp: new Date().toISOString() }); res.json({
status: 'ok',
service: 'thw-auth',
timestamp: new Date().toISOString(),
env: {
hasClientId: !!process.env.DISCORD_CLIENT_ID,
hasClientSecret: !!process.env.DISCORD_CLIENT_SECRET,
hasRedirectUri: !!process.env.DISCORD_REDIRECT_URI,
redirectUri: process.env.DISCORD_REDIRECT_URI,
nodeEnv: process.env.NODE_ENV,
}
});
}); });
app.listen(PORT, () => { app.listen(PORT, () => {

View File

@ -7,9 +7,17 @@ const router = Router();
const DISCORD_API = 'https://discord.com/api'; const DISCORD_API = 'https://discord.com/api';
const DISCORD_CLIENT_ID = process.env.DISCORD_CLIENT_ID; function getDiscordClientId() {
const DISCORD_CLIENT_SECRET = process.env.DISCORD_CLIENT_SECRET; return process.env.DISCORD_CLIENT_ID;
const DISCORD_REDIRECT_URI = process.env.DISCORD_REDIRECT_URI; }
function getDiscordClientSecret() {
return process.env.DISCORD_CLIENT_SECRET;
}
function getDiscordRedirectUri() {
return process.env.DISCORD_REDIRECT_URI;
}
const WHITELIST = new Set([ const WHITELIST = new Set([
'1207017997173137481' '1207017997173137481'
@ -23,8 +31,8 @@ router.get('/discord', (req, res) => {
const next = req.query.next || '/'; const next = req.query.next || '/';
const safeNext = next.startsWith('/') && !next.startsWith('//') ? next : '/'; const safeNext = next.startsWith('/') && !next.startsWith('//') ? next : '/';
const params = new URLSearchParams({ const params = new URLSearchParams({
client_id: DISCORD_CLIENT_ID, client_id: getDiscordClientId(),
redirect_uri: DISCORD_REDIRECT_URI, redirect_uri: getDiscordRedirectUri(),
response_type: 'code', response_type: 'code',
scope: 'identify', scope: 'identify',
state: safeNext, state: safeNext,
@ -47,11 +55,11 @@ router.get('/discord/callback', async (req, res) => {
method: 'POST', method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({ body: new URLSearchParams({
client_id: DISCORD_CLIENT_ID, client_id: getDiscordClientId(),
client_secret: DISCORD_CLIENT_SECRET, client_secret: getDiscordClientSecret(),
grant_type: 'authorization_code', grant_type: 'authorization_code',
code, code,
redirect_uri: DISCORD_REDIRECT_URI, redirect_uri: getDiscordRedirectUri(),
}).toString(), }).toString(),
}); });
if (!tokenRes.ok) { if (!tokenRes.ok) {