Files
SDSStundenerfassung/server.js
Carsten Graf daf4f9b77c Massdownload
2026-01-23 17:29:46 +01:00

91 lines
2.8 KiB
JavaScript

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');