Files
Hotel-Booking/Frontend/src/utils/validationSchemas.ts
Iliyan Angelov 9842cc3a4a updates
2025-11-21 19:44:42 +02:00

83 lines
2.2 KiB
TypeScript

import * as yup from 'yup';
export const loginSchema = yup.object().shape({
email: yup
.string()
.required('Email is required')
.email('Invalid email')
.trim(),
password: yup
.string()
.required('Password is required')
.min(8, 'Password must be at least 8 characters'),
rememberMe: yup
.boolean()
.optional(),
});
export const registerSchema = yup.object().shape({
name: yup
.string()
.required('Full name is required')
.min(2, 'Full name must be at least 2 characters')
.max(50, 'Full name must not exceed 50 characters')
.trim(),
email: yup
.string()
.required('Email is required')
.email('Invalid email')
.trim(),
password: yup
.string()
.required('Password is required')
.min(8, 'Password must be at least 8 characters')
.matches(
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])/,
'Password must contain uppercase, lowercase, ' +
'number and special character'
),
confirmPassword: yup
.string()
.required('Please confirm password')
.oneOf([yup.ref('password')], 'Passwords do not match'),
phone: yup
.string()
.optional()
.matches(
/^[\d\s\-\+\(\)]{5,}$/,
'Please enter a valid phone number'
),
});
export const forgotPasswordSchema = yup.object().shape({
email: yup
.string()
.required('Email is required')
.email('Invalid email')
.trim(),
});
export const resetPasswordSchema = yup.object().shape({
password: yup
.string()
.required('New password is required')
.min(8, 'Password must be at least 8 characters')
.matches(
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])/,
'Password must contain uppercase, lowercase, ' +
'number and special character'
),
confirmPassword: yup
.string()
.required('Please confirm password')
.oneOf([yup.ref('password')], 'Passwords do not match'),
});
export type LoginFormData = yup.InferType<typeof loginSchema>;
export type RegisterFormData =
yup.InferType<typeof registerSchema>;
export type ForgotPasswordFormData =
yup.InferType<typeof forgotPasswordSchema>;
export type ResetPasswordFormData =
yup.InferType<typeof resetPasswordSchema>;