jagd-apps/drohnenfuehrer/backend/middleware/validator.js

53 lines
1.3 KiB
JavaScript

const { body, validationResult } = require('express-validator');
const handleValidationErrors = (req, res, next) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({
success: false,
message: 'Validierungsfehler',
errors: errors.array()
});
}
next();
};
const validateLogin = [
body('username')
.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'),
handleValidationErrors
];
const validateGPS = [
body('lat')
.isFloat({ min: -90, max: 90 })
.withMessage('Latitude muss zwischen -90 und 90 liegen'),
body('lng')
.isFloat({ min: -180, max: 180 })
.withMessage('Longitude muss zwischen -180 und 180 liegen'),
handleValidationErrors
];
const validateAvailability = [
body('available')
.isBoolean()
.withMessage('Verfügbarkeit muss ein Boolean-Wert sein'),
handleValidationErrors
];
module.exports = {
validateLogin,
validateGPS,
validateAvailability,
handleValidationErrors
};