chore: JSON-404 fuer die API, Login-Validator entschlacken, Altlasten entfernen
- Unbekannte Pfade unter /api fielen bis zum Express-Standard durch und
lieferten eine HTML-Seite ("Cannot GET /api/foo"), mit der ein JSON-Client
nichts anfangen kann. Es gab keinen 404-Handler; errorHandler greift nur
bei next(err). Jetzt antwortet /api mit JSON und Status 404.
- validateLogin verlangte fuer das EINGEGEBENE Passwort mindestens 6 Zeichen.
Eine Policy gehoert nicht in den Login-Pfad: kurze Eingaben lieferten 400
"Validierungsfehler" statt 401 und verrieten damit etwas ueber die Regeln;
ausserdem widersprach der Wert dem minlength: 12 des Admin-Schemas.
Geprueft: kurzes Passwort liefert jetzt 401.
- d9fecb6 hatte versehentlich ein backend/-Verzeichnis im Repo-Wurzel
eingecheckt (leere .gitignore, zwei 0-Byte-Logdateien) — ausserhalb jeder
App. Entfernt und im Wurzel-.gitignore gegen Wiederkehr abgesichert.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
e2af87a7e5
commit
2950f09485
|
|
@ -17,3 +17,7 @@ portal/ssl/
|
|||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Versehentlich angelegte Log-Verzeichnisse
|
||||
logs/
|
||||
*.log
|
||||
|
|
|
|||
|
|
@ -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
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
Loading…
Reference in New Issue