const express = require('express'); const session = require('express-session'); const bodyParser = require('body-parser'); const path = require('path'); const { initDatabase } = require('./database'); const { getDefaultRole } = require('./helpers/utils'); const app = express(); const PORT = 3333; // Middleware app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.use(express.static('public')); app.set('view engine', 'ejs'); app.set('views', path.join(__dirname, 'views')); // Session-Konfiguration // Standard: 24 Stunden, kann in der Login-Route auf 30 Tage erhöht werden wenn "Angemeldet bleiben" aktiviert ist app.use(session({ secret: 'stundenerfassung-geheim-2024', resave: false, saveUninitialized: false, cookie: { maxAge: 24 * 60 * 60 * 1000 } // Standard: 24 Stunden })); // Datenbank initialisieren initDatabase(); // Routes importieren und registrieren const registerAuthRoutes = require('./routes/auth'); const registerDashboardRoutes = require('./routes/dashboard'); const registerUserRoutes = require('./routes/user'); const registerAdminRoutes = require('./routes/admin'); const registerAdminLDAPRoutes = require('./routes/admin-ldap'); const registerVerwaltungRoutes = require('./routes/verwaltung'); const registerTimesheetRoutes = require('./routes/timesheet'); // Services importieren const { setupPingService } = require('./services/ping-service'); const { setupLDAPScheduler } = require('./services/ldap-scheduler'); // Routes registrieren registerAuthRoutes(app); registerDashboardRoutes(app); registerUserRoutes(app); registerAdminRoutes(app); registerAdminLDAPRoutes(app); registerVerwaltungRoutes(app); registerTimesheetRoutes(app); // Start-Route app.get('/', (req, res) => { if (req.session.userId) { // Redirect: Immer zu Dashboard wenn Mitarbeiter-Rolle vorhanden, sonst basierend auf currentRole const roles = req.session.roles || []; if (roles.includes('mitarbeiter')) { res.redirect('/dashboard'); } else { const currentRole = req.session.currentRole || getDefaultRole(roles); if (currentRole === 'admin') { res.redirect('/admin'); } else if (currentRole === 'verwaltung') { res.redirect('/verwaltung'); } else { res.redirect('/dashboard'); } } } else { res.redirect('/login'); } }); // Server starten app.listen(PORT, () => { console.log(`Server läuft auf http://localhost:${PORT}`); console.log('Standard-Zugangsdaten:'); console.log('Admin: admin / admin123'); console.log('Verwaltung: verwaltung / verwaltung123'); // LDAP-Scheduler starten setupLDAPScheduler(); // Ping-Service starten setupPingService(); console.log('Ping-Service gestartet (prüft alle IPs jede Minute)'); }); // Check-in-Server starten (separater Server auf Port 3334) require('./checkin-server');