diff --git a/.gitignore b/.gitignore index 0a0ff98..2b9e63a 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,7 @@ portal/ssl/ # OS .DS_Store Thumbs.db + +# Versehentlich angelegte Log-Verzeichnisse +logs/ +*.log diff --git a/drohnenfuehrer/backend/middleware/validator.js b/drohnenfuehrer/backend/middleware/validator.js index 41f55b6..11431ae 100644 --- a/drohnenfuehrer/backend/middleware/validator.js +++ b/drohnenfuehrer/backend/middleware/validator.js @@ -17,11 +17,13 @@ const validateLogin = [ .trim() .notEmpty() .withMessage('Benutzername ist erforderlich'), + // Keine Laengenpruefung: eine Passwort-Policy gehoert nicht in den + // Login-Pfad. Sie liefert 400 statt 401 und verraet damit unnoetig etwas + // ueber die Regeln; ausserdem widersprach der Wert dem minlength des + // Admin-Schemas. body('password') .notEmpty() - .withMessage('Passwort ist erforderlich') - .isLength({ min: 6 }) - .withMessage('Passwort muss mindestens 6 Zeichen lang sein'), + .withMessage('Passwort ist erforderlich'), handleValidationErrors ]; diff --git a/drohnenfuehrer/backend/server.js b/drohnenfuehrer/backend/server.js index a5feddb..7dd99e9 100644 --- a/drohnenfuehrer/backend/server.js +++ b/drohnenfuehrer/backend/server.js @@ -73,6 +73,13 @@ app.use('/api', require('./routes/auditRoutes')); app.use('/api/config', require('./routes/configRoutes')); app.use('/api/drohnenfuehrer', require('./routes/drohnenfuehrerRoutes')); +// Unbekannte API-Pfade als JSON beantworten. Ohne das faellt die Anfrage bis zum +// Express-Standard durch und liefert eine HTML-Seite ("Cannot GET /api/foo"), +// mit der ein JSON-Client nichts anfangen kann. +app.use('/api', (req, res) => { + res.status(404).json({ success: false, message: 'Endpunkt nicht gefunden' }); +}); + // Health check with basic system info app.get('/health', async (req, res) => { const dbStatus = mongoose.connection.readyState === 1 ? 'connected' : 'disconnected'; diff --git a/nachsuche/backend/middleware/validator.js b/nachsuche/backend/middleware/validator.js index 41f55b6..11431ae 100644 --- a/nachsuche/backend/middleware/validator.js +++ b/nachsuche/backend/middleware/validator.js @@ -17,11 +17,13 @@ const validateLogin = [ .trim() .notEmpty() .withMessage('Benutzername ist erforderlich'), + // Keine Laengenpruefung: eine Passwort-Policy gehoert nicht in den + // Login-Pfad. Sie liefert 400 statt 401 und verraet damit unnoetig etwas + // ueber die Regeln; ausserdem widersprach der Wert dem minlength des + // Admin-Schemas. body('password') .notEmpty() - .withMessage('Passwort ist erforderlich') - .isLength({ min: 6 }) - .withMessage('Passwort muss mindestens 6 Zeichen lang sein'), + .withMessage('Passwort ist erforderlich'), handleValidationErrors ]; diff --git a/nachsuche/backend/server.js b/nachsuche/backend/server.js index 4bd9c65..170bd9b 100644 --- a/nachsuche/backend/server.js +++ b/nachsuche/backend/server.js @@ -73,6 +73,13 @@ app.use('/api', require('./routes/auditRoutes')); app.use('/api/config', require('./routes/configRoutes')); app.use('/api/handler', require('./routes/handlerRoutes')); +// Unbekannte API-Pfade als JSON beantworten. Ohne das faellt die Anfrage bis zum +// Express-Standard durch und liefert eine HTML-Seite ("Cannot GET /api/foo"), +// mit der ein JSON-Client nichts anfangen kann. +app.use('/api', (req, res) => { + res.status(404).json({ success: false, message: 'Endpunkt nicht gefunden' }); +}); + // Health check with basic system info app.get('/health', async (req, res) => { const dbStatus = mongoose.connection.readyState === 1 ? 'connected' : 'disconnected'; diff --git a/stoeberhunde/backend/middleware/validator.js b/stoeberhunde/backend/middleware/validator.js index 41f55b6..11431ae 100644 --- a/stoeberhunde/backend/middleware/validator.js +++ b/stoeberhunde/backend/middleware/validator.js @@ -17,11 +17,13 @@ const validateLogin = [ .trim() .notEmpty() .withMessage('Benutzername ist erforderlich'), + // Keine Laengenpruefung: eine Passwort-Policy gehoert nicht in den + // Login-Pfad. Sie liefert 400 statt 401 und verraet damit unnoetig etwas + // ueber die Regeln; ausserdem widersprach der Wert dem minlength des + // Admin-Schemas. body('password') .notEmpty() - .withMessage('Passwort ist erforderlich') - .isLength({ min: 6 }) - .withMessage('Passwort muss mindestens 6 Zeichen lang sein'), + .withMessage('Passwort ist erforderlich'), handleValidationErrors ]; diff --git a/stoeberhunde/backend/server.js b/stoeberhunde/backend/server.js index cae7a54..4b4998b 100644 --- a/stoeberhunde/backend/server.js +++ b/stoeberhunde/backend/server.js @@ -73,6 +73,13 @@ app.use('/api', require('./routes/auditRoutes')); app.use('/api/config', require('./routes/configRoutes')); app.use('/api/stoeberhundefuehrer', require('./routes/stoeberhundefuehrerRoutes')); +// Unbekannte API-Pfade als JSON beantworten. Ohne das faellt die Anfrage bis zum +// Express-Standard durch und liefert eine HTML-Seite ("Cannot GET /api/foo"), +// mit der ein JSON-Client nichts anfangen kann. +app.use('/api', (req, res) => { + res.status(404).json({ success: false, message: 'Endpunkt nicht gefunden' }); +}); + // Health check with basic system info app.get('/health', async (req, res) => { const dbStatus = mongoose.connection.readyState === 1 ? 'connected' : 'disconnected';