41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
// utils/validation.js
|
|
const Joi = require("joi");
|
|
|
|
const registerSchema = Joi.object({
|
|
username: Joi.string().min(3).max(30).required().messages({
|
|
"string.empty": "Username is required",
|
|
"string.min": "Username must be at least 3 characters long",
|
|
"string.max": "Username must be at most 30 characters long",
|
|
}),
|
|
email: Joi.string().email().required().messages({
|
|
"string.email": "Email must be a valid email",
|
|
"string.empty": "Email is required",
|
|
}),
|
|
// password: Joi.string().min(6).required().messages({
|
|
// "string.min": "Password must be at least 6 characters long",
|
|
// "string.empty": "Password is required",
|
|
// }),
|
|
password: Joi.string()
|
|
.pattern(
|
|
new RegExp(
|
|
"^(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*])[A-Za-z0-9!@#$%^&*]{6,}$"
|
|
)
|
|
)
|
|
.required()
|
|
.messages({
|
|
"string.pattern.base":
|
|
"Password must be at least 6 characters long and include at least one uppercase letter, one number, and one special character",
|
|
"string.empty": "Password is required",
|
|
}),
|
|
});
|
|
|
|
const loginSchema = Joi.object({
|
|
email: Joi.string().email().required(),
|
|
password: Joi.string().required(),
|
|
});
|
|
|
|
module.exports = {
|
|
registerSchema,
|
|
loginSchema,
|
|
};
|