diff --git a/helpers/validation.js b/helpers/validation.js index 1b6738a..149d11d 100644 --- a/helpers/validation.js +++ b/helpers/validation.js @@ -63,9 +63,38 @@ const deviceUpdateSchema = Joi.object({ }) }).min(1); +// ======================== +// Users Validation +// ======================== +const userSchema = Joi.object({ + fullname: Joi.string().min(3).max(100).required(), + name: Joi.string().alphanum().min(3).max(50).required(), + email: Joi.string().email().required(), + phone: Joi.string() + .pattern(/^(?:\+62|0)8\d{7,10}$/) + .required() + .messages({ + 'string.pattern.base': + 'Phone number must be a valid Indonesian number in format +628XXXXXXXXX' + }), + password: Joi.string() + .min(8) + .pattern(/[A-Z]/, 'uppercase letter') + .pattern(/[a-z]/, 'lowercase letter') + .pattern(/\d/, 'number') + .pattern(/[!@#$%^&*(),.?":{}|<>]/, 'special character') + .required() + .messages({ + 'string.min': 'Password must be at least 8 characters long', + 'string.pattern.name': 'Password must contain at least one {#name}' + }), + role_id : Joi.number().integer().min(1) +}); + module.exports = { registerSchema, loginSchema, deviceSchema, - deviceUpdateSchema + deviceUpdateSchema, + userSchema, };