V1.1 Verschiedene Anpassungen
This commit is contained in:
91
routes/dashboard-routes.js
Normal file
91
routes/dashboard-routes.js
Normal file
@@ -0,0 +1,91 @@
|
||||
// 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;
|
||||
Reference in New Issue
Block a user