diff --git a/package-lock.json b/package-lock.json
index b7c7e3d..f1f1d33 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,6 +14,7 @@
"@testing-library/jest-dom": "^5.16.1",
"@testing-library/react": "^12.1.2",
"@testing-library/user-event": "^13.5.0",
+ "email-validator": "^2.0.4",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "5.0.0",
@@ -6506,6 +6507,14 @@
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.46.tgz",
"integrity": "sha512-UtV0xUA/dibCKKP2JMxOpDtXR74zABevuUEH4K0tvduFSIoxRVcYmQsbB51kXsFTX8MmOyWMt8tuZAlmDOqkrQ=="
},
+ "node_modules/email-validator": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz",
+ "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==",
+ "engines": {
+ "node": ">4.0"
+ }
+ },
"node_modules/emittery": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz",
@@ -20901,6 +20910,11 @@
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.46.tgz",
"integrity": "sha512-UtV0xUA/dibCKKP2JMxOpDtXR74zABevuUEH4K0tvduFSIoxRVcYmQsbB51kXsFTX8MmOyWMt8tuZAlmDOqkrQ=="
},
+ "email-validator": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz",
+ "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ=="
+ },
"emittery": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz",
diff --git a/package.json b/package.json
index e43f16a..5bc6284 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,7 @@
"@testing-library/jest-dom": "^5.16.1",
"@testing-library/react": "^12.1.2",
"@testing-library/user-event": "^13.5.0",
+ "email-validator": "^2.0.4",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "5.0.0",
diff --git a/src/components/LoginForm/index.js b/src/components/LoginForm/index.js
index 7cd1254..52856b0 100644
--- a/src/components/LoginForm/index.js
+++ b/src/components/LoginForm/index.js
@@ -8,33 +8,95 @@ import Grid from '@mui/material/Grid';
import Snackbar from '@mui/material/Snackbar';
import Typography from '@mui/material/Typography';
import logo from '../../assets/logo.svg';
+import { validate } from 'email-validator';
+
export default function LoginForm() {
const [showAlert, setShowAlert] = useState(false);
+ const [emailError, setEmailError] = useState("");
+ const [passwordError, setPasswordError] = useState("");
const validateForm = (event) => {
event.preventDefault()
const data = new FormData(event.currentTarget);
const email = data.get('email');
const password = data.get('password');
- // Add validation code here
+ const isValidEmail = (email) => {
+ return validate(email);
+ }
+
+ if (!isValidEmail(email)) {
+ console.log("sai email")
+ setEmailError("Invalid email");
+ return;
+ }
+
+ const isValidPassword = (password) => {
+
+ if (password.length < 8) {
+ return false;
+ }
+
+ const hasUpperCase = /[A-Z]/.test(password);
+ const hasLowerCase = /[a-z]/.test(password);
+ const hasNumeric = /\d/.test(password);
+ const hasSpecial = /[!@#$%^&*]/.test(password);
+
+ if (!hasUpperCase || !hasLowerCase || !hasNumeric || !hasSpecial) {
+ return false;
+ }
+
+ return true;
+
+ }
+
+ if (!isValidPassword(password)) {
+ console.log('sai mk')
+ setPasswordError("Invalid password");
+ return;
+ }
+ return true
}
const handleSubmit = (event) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
- console.log({
- email: data.get('email'),
- password: data.get('password'),
- });
- validateForm(event);
+ // console.log({
+ // email: data.get('email'),
+ // password: data.get('password'),
+ // });
+ const isValid = validateForm(event);
+ if (!isValid) {
+ return;
+ }
+
setShowAlert("Login Successful");
};
return (
<>
+ {emailError &&
+ setEmailError(false)}
+ message={emailError}
+ >
+ {emailError}
+
+ }
+ {passwordError &&
+ setPasswordError(false)}
+ message={passwordError}
+ >
+ {passwordError}
+
+ }
{showAlert &&