validators/auth.validators.js

const yup = require("yup");

/**
 * Module for validating user registration and login data using Yup.
 * @module validators/authValidators
 * @requires yup
 */

// Regular expression to check against password
const passwordRegex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/;

/**
 * Validation schema for user registration.
 */
const registerValidator = yup.object({
  firstName: yup.string().required().trim(),
  lastName: yup.string().required().trim(),
  email: yup.string().required().trim().email(),
  password: yup.string().required().min(8).matches(passwordRegex),
});

/**
 * Validation schema for user login.
 */
const loginValidator = yup.object({
  email: yup
    .string()
    .required("Email required!")
    .trim()
    .email("Email invalid!"),
  password: yup
    .string()
    .required()
    .matches(
      passwordRegex,
      "The Password must contain at least 8 characters, one uppercase, one lowercase and a number!"
    ),
});

module.exports = { registerValidator, loginValidator };