diff --git a/routes/api.js b/routes/api.js index 381b73c..129d7f4 100644 --- a/routes/api.js +++ b/routes/api.js @@ -236,49 +236,4 @@ router.post('/submit-membership', async (req, res) => { } }); -// ============================================ -// GET /confirm/:token — E-Mail Bestätigung -// ============================================ -router.get('/confirm/:token', async (req, res) => { - try { - const [rows] = await db.query( - "SELECT * FROM memberships WHERE confirmation_token = ? AND status = 'pending'", - [req.params.token] - ); - - if (rows.length === 0) { - // Prüfen ob bereits bestätigt - const [confirmed] = await db.query( - "SELECT * FROM memberships WHERE confirmation_token = ? AND status = 'active'", - [req.params.token] - ); - if (confirmed.length > 0) { - return res.render('confirmation-success'); // Bereits bestätigt - } - return res.render('confirmation-invalid'); - } - - const member = rows[0]; - - // Prüfen ob Link abgelaufen (24h) - const createdAt = new Date(member.created_at); - const now = new Date(); - const hoursDiff = (now - createdAt) / (1000 * 60 * 60); - if (hoursDiff > 24) { - return res.render('confirmation-invalid'); - } - - // Mitgliedschaft aktivieren - await db.query( - "UPDATE memberships SET status='active', confirmed_at=NOW() WHERE id=?", - [member.id] - ); - - res.render('confirmation-success'); - } catch (err) { - console.error('Confirm error:', err); - res.render('error', { message: 'Fehler bei der Bestätigung.' }); - } -}); - module.exports = router; diff --git a/routes/index.js b/routes/index.js index a1f012d..3fa32cf 100644 --- a/routes/index.js +++ b/routes/index.js @@ -37,6 +37,35 @@ router.get('/bestaetigung-ausstehend', (req, res) => { res.render('confirmation-pending', { email: req.query.email || '' }); }); +// E-Mail Bestätigung +router.get('/confirm/:token', async (req, res) => { + try { + const [rows] = await db.query( + "SELECT * FROM memberships WHERE confirmation_token = ? AND status = 'pending'", + [req.params.token] + ); + if (rows.length === 0) { + const [confirmed] = await db.query( + "SELECT * FROM memberships WHERE confirmation_token = ? AND status = 'active'", + [req.params.token] + ); + if (confirmed.length > 0) return res.render('confirmation-success'); + return res.render('confirmation-invalid'); + } + const member = rows[0]; + const hoursDiff = (new Date() - new Date(member.created_at)) / (1000 * 60 * 60); + if (hoursDiff > 24) return res.render('confirmation-invalid'); + await db.query( + "UPDATE memberships SET status='active', confirmed_at=NOW() WHERE id=?", + [member.id] + ); + res.render('confirmation-success'); + } catch (err) { + console.error('Confirm error:', err); + res.render('error', { message: 'Fehler bei der Bestätigung.' }); + } +}); + // Erfolgsseite router.get('/erfolg', (req, res) => { res.render('success');