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 &&