From f55431def46a484f55b7ead213cb6d13b966942d Mon Sep 17 00:00:00 2001
From: Nasser AlKawari <60303522@udst.edu.qa>
Date: Sat, 11 Apr 2026 17:16:42 +0300
Subject: [PATCH 1/3] feat: add input validation to login form
---
src/pages/LoginPage.jsx | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/src/pages/LoginPage.jsx b/src/pages/LoginPage.jsx
index a8b63b8..6c5d512 100644
--- a/src/pages/LoginPage.jsx
+++ b/src/pages/LoginPage.jsx
@@ -8,15 +8,47 @@ function LoginPage() {
password: "",
});
+ const [errors, setErrors] = useState({});
+
+ const validateForm = () => {
+ const newErrors = {};
+
+ if (!formData.email.trim()) {
+ newErrors.email = "Email is required.";
+ } else if (!/\S+@\S+\.\S+/.test(formData.email)) {
+ newErrors.email = "Please enter a valid email address.";
+ }
+
+ if (!formData.password.trim()) {
+ newErrors.password = "Password is required.";
+ } else if (formData.password.length < 6) {
+ newErrors.password = "Password must be at least 6 characters.";
+ }
+
+ return newErrors;
+ };
+
const handleChange = (e) => {
setFormData((prev) => ({
...prev,
[e.target.name]: e.target.value,
}));
+
+ setErrors((prev) => ({
+ ...prev,
+ [e.target.name]: "",
+ }));
};
const handleSubmit = (e) => {
e.preventDefault();
+
+ const validationErrors = validateForm();
+ if (Object.keys(validationErrors).length > 0) {
+ setErrors(validationErrors);
+ return;
+ }
+
navigate("/landing");
};
@@ -38,6 +70,7 @@ function LoginPage() {
value={formData.email}
onChange={handleChange}
/>
+ {errors.email &&
{errors.email}
}
+ {errors.password && {errors.password}
}