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;
|
||||
|
||||
@ -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');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user