Init
This commit is contained in:
92
server.js
Normal file
92
server.js
Normal file
@@ -0,0 +1,92 @@
|
||||
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 = 3335;
|
||||
|
||||
// Middleware
|
||||
app.use(bodyParser.urlencoded({ extended: true }));
|
||||
app.use(bodyParser.json());
|
||||
// Trust proxy für korrekte Client-IP-Erkennung (wichtig bei Proxies/Reverse Proxies)
|
||||
app.set('trust proxy', true);
|
||||
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');
|
||||
Reference in New Issue
Block a user