75 lines
2.2 KiB
JavaScript
75 lines
2.2 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const db = require('../config/database');
|
|
|
|
// Startseite - Tarife anzeigen
|
|
router.get('/', async (req, res) => {
|
|
try {
|
|
const [tariffs] = await db.query(
|
|
'SELECT * FROM tariffs WHERE active = 1 ORDER BY price_monthly ASC'
|
|
);
|
|
res.render('index', { tariffs, error: null });
|
|
} catch (err) {
|
|
console.error(err);
|
|
res.render('index', { tariffs: [], error: 'Tarife konnten nicht geladen werden.' });
|
|
}
|
|
});
|
|
|
|
// Anmelde-Formular für gewählten Tarif
|
|
router.get('/anmelden/:tariffId', async (req, res) => {
|
|
try {
|
|
const [tariffs] = await db.query(
|
|
'SELECT * FROM tariffs WHERE id = ? AND active = 1',
|
|
[req.params.tariffId]
|
|
);
|
|
if (tariffs.length === 0) {
|
|
return res.redirect('/');
|
|
}
|
|
res.render('signup', { tariff: tariffs[0] });
|
|
} catch (err) {
|
|
console.error(err);
|
|
res.redirect('/');
|
|
}
|
|
});
|
|
|
|
// Bestätigung ausstehend
|
|
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');
|
|
});
|
|
|
|
module.exports = router;
|