add changes
This commit is contained in:
86
backend/middleware/validation.middleware.js
Normal file
86
backend/middleware/validation.middleware.js
Normal file
@@ -0,0 +1,86 @@
|
||||
const { body, validationResult } = require('express-validator');
|
||||
|
||||
/**
|
||||
* Validation middleware for user registration
|
||||
*/
|
||||
exports.validateRegistration = [
|
||||
body('username')
|
||||
.trim()
|
||||
.notEmpty()
|
||||
.withMessage('Username is required')
|
||||
.isLength({ min: 3, max: 50 })
|
||||
.withMessage('Username must be between 3 and 50 characters')
|
||||
.matches(/^[a-zA-Z0-9_]+$/)
|
||||
.withMessage('Username can only contain letters, numbers, and underscores'),
|
||||
|
||||
body('email')
|
||||
.trim()
|
||||
.notEmpty()
|
||||
.withMessage('Email is required')
|
||||
.isEmail()
|
||||
.withMessage('Please provide a valid email address')
|
||||
.normalizeEmail(),
|
||||
|
||||
body('password')
|
||||
.notEmpty()
|
||||
.withMessage('Password is required')
|
||||
.isLength({ min: 8 })
|
||||
.withMessage('Password must be at least 8 characters long')
|
||||
.matches(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/)
|
||||
.withMessage('Password must contain at least one uppercase letter, one lowercase letter, and one number'),
|
||||
|
||||
body('guestSessionId')
|
||||
.optional()
|
||||
.trim()
|
||||
.notEmpty()
|
||||
.withMessage('Guest session ID cannot be empty if provided'),
|
||||
|
||||
// Check for validation errors
|
||||
(req, res, next) => {
|
||||
const errors = validationResult(req);
|
||||
if (!errors.isEmpty()) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: 'Validation failed',
|
||||
errors: errors.array().map(err => ({
|
||||
field: err.path,
|
||||
message: err.msg
|
||||
}))
|
||||
});
|
||||
}
|
||||
next();
|
||||
}
|
||||
];
|
||||
|
||||
/**
|
||||
* Validation middleware for user login
|
||||
*/
|
||||
exports.validateLogin = [
|
||||
body('email')
|
||||
.trim()
|
||||
.notEmpty()
|
||||
.withMessage('Email is required')
|
||||
.isEmail()
|
||||
.withMessage('Please provide a valid email address')
|
||||
.normalizeEmail(),
|
||||
|
||||
body('password')
|
||||
.notEmpty()
|
||||
.withMessage('Password is required'),
|
||||
|
||||
// Check for validation errors
|
||||
(req, res, next) => {
|
||||
const errors = validationResult(req);
|
||||
if (!errors.isEmpty()) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: 'Validation failed',
|
||||
errors: errors.array().map(err => ({
|
||||
field: err.path,
|
||||
message: err.msg
|
||||
}))
|
||||
});
|
||||
}
|
||||
next();
|
||||
}
|
||||
];
|
||||
Reference in New Issue
Block a user