diff --git a/backend/validators/authValidator.js b/backend/validators/authValidator.js index ab4dac07..4fd9fac6 100644 --- a/backend/validators/authValidator.js +++ b/backend/validators/authValidator.js @@ -6,8 +6,8 @@ const signupSchema = z.object({ .min(3, "Username must be at least 3 characters long") .max(30, "Username must be at most 30 characters long") .regex(/^[a-zA-Z0-9_]+$/, "Username can only contain letters, numbers, and underscores") - , - + , + email: z.string() .trim() .toLowerCase() @@ -18,7 +18,7 @@ const signupSchema = z.object({ .min(8, "Password must be at least 8 characters long") .max(100, "Password must be at most 100 characters long") .regex( - /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]+$/, + /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}+$/, 'Password must contain uppercase, lowercase, number, and special character' ), }); diff --git a/src/pages/Signup/Signup.tsx b/src/pages/Signup/Signup.tsx index 9bf90fb4..98877e10 100644 --- a/src/pages/Signup/Signup.tsx +++ b/src/pages/Signup/Signup.tsx @@ -39,8 +39,8 @@ const SignUp: React.FC = () => { if (name === "username") { if (!value.trim()) { errorMessage = "Username is required"; - } else if (!/^[A-Za-z\s]+$/.test(value)) { - errorMessage = "Only letters are allowed"; + } else if (!/^[a-zA-Z0-9_]+$/.test(value)) { + errorMessage = "Username can contain only letters, numbers, and underscores"; } } if (name === "email") { @@ -77,9 +77,7 @@ const SignUp: React.FC = () => { : ""; const passwordError = !formData.password.trim() ? "Password is required" - : !/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*#?&]{8,}$/.test( - formData.password, - ) + : !/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*#?&]{8,}$/.test(formData.password) ? "Password must be 8+ characters with letters and numbers" : ""; if (usernameError || emailError || passwordError) { @@ -118,32 +116,27 @@ const SignUp: React.FC = () => { return (