// Dashboard-Route const { hasRole } = require('../helpers/utils'); const { requireAuth } = require('../middleware/auth'); const { generateCheckinCheckoutQRPDF } = require('../services/pdf-service'); const { db } = require('../database'); // Routes registrieren function registerDashboardRoutes(app) { // Check-in Root URL abrufen (öffentlich zugänglich für Konfiguration) app.get('/api/checkin-root-url', (req, res) => { db.get('SELECT checkin_root_url FROM system_options WHERE id = 1', (err, options) => { if (err) { return res.status(500).json({ error: 'Fehler beim Laden der Root URL' }); } res.json({ root_url: options && options.checkin_root_url ? options.checkin_root_url : null }); }); }); // QR-Code-PDF (Check-in/Check-out) – nur für eingeloggte Nutzer mit Mitarbeiter-Rolle // Interne URLs app.get('/api/dashboard/qr-pdf/internal', requireAuth, (req, res) => { if (!hasRole(req, 'mitarbeiter')) { return res.status(403).send('Zugriff verweigert'); } generateCheckinCheckoutQRPDF(req, res, 'internal'); }); // Externe URLs app.get('/api/dashboard/qr-pdf/external', requireAuth, (req, res) => { if (!hasRole(req, 'mitarbeiter')) { return res.status(403).send('Zugriff verweigert'); } generateCheckinCheckoutQRPDF(req, res, 'external'); }); // Dashboard für Mitarbeiter app.get('/dashboard', requireAuth, (req, res) => { // Prüfe ob User Mitarbeiter-Rolle hat if (!hasRole(req, 'mitarbeiter')) { // Wenn User keine Mitarbeiter-Rolle hat, aber andere Rollen, redirecte entsprechend if (hasRole(req, 'admin')) { return res.redirect('/admin'); } if (hasRole(req, 'verwaltung')) { return res.redirect('/verwaltung'); } return res.status(403).send('Zugriff verweigert'); } res.render('dashboard', { user: { id: req.session.userId, firstname: req.session.firstname, lastname: req.session.lastname, username: req.session.username, roles: req.session.roles || [], currentRole: req.session.currentRole || 'mitarbeiter' } }); }); // Überstunden-Auswertung für Mitarbeiter app.get('/overtime-breakdown', requireAuth, (req, res) => { // Prüfe ob User Mitarbeiter-Rolle hat if (!hasRole(req, 'mitarbeiter')) { // Wenn User keine Mitarbeiter-Rolle hat, aber andere Rollen, redirecte entsprechend if (hasRole(req, 'admin')) { return res.redirect('/admin'); } if (hasRole(req, 'verwaltung')) { return res.redirect('/verwaltung'); } return res.status(403).send('Zugriff verweigert'); } res.render('overtime-breakdown', { user: { id: req.session.userId, firstname: req.session.firstname, lastname: req.session.lastname, username: req.session.username, roles: req.session.roles || [], currentRole: req.session.currentRole || 'mitarbeiter' } }); }); } module.exports = registerDashboardRoutes;