6t798i
This commit is contained in:
parent
b2784e7b63
commit
8c38fd2b5d
@ -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;
|
module.exports = router;
|
||||||
|
|||||||
@ -37,6 +37,35 @@ router.get('/bestaetigung-ausstehend', (req, res) => {
|
|||||||
res.render('confirmation-pending', { email: req.query.email || '' });
|
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
|
// Erfolgsseite
|
||||||
router.get('/erfolg', (req, res) => {
|
router.get('/erfolg', (req, res) => {
|
||||||
res.render('success');
|
res.render('success');
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user