91 lines
2.8 KiB
JavaScript
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');
|