'use client'; import { useState, useEffect, useContext } from 'react'; import { signInWithEmailAndPassword } from 'firebase/auth'; import { auth } from '../../services/firebase'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { AuthContext } from '../components/AuthContext' const Login = () => { const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [isValidEmail, setIsValidEmail] = useState(false); const [isValidPassword, setIsValidPassword] = useState(false); const [isPasswordVisible, setIsPasswordVisible] = useState(true); const router = useRouter() const user = useContext(AuthContext); useEffect(() => { // Check if user is authenticated if (!user) { // Redirect or perform any necessary action } else { // User is authenticated, continue with desired logic router.push('/profiles'); } }, [user]); useEffect(() => { debounce(emailValidation()); }, [email]); useEffect(() => { debounce(passwordValidation()); }, [password]); const emailValidation = () => { const emailRegex = /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i; if (!email || emailRegex.test(email) === false) { setIsValidEmail(false); return false; } setIsValidEmail(true); return true; }; const passwordValidation = () => { const passwordRegex = /^(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+])[A-Za-z\d!@#$%^&*()_+]{8,}$/i; if (!password || passwordRegex.test(password) === false) { setIsValidPassword(false) return false } setIsValidPassword(true) return true } const debounce = fn => { let id = null; return (...args) => { if (id) { clearTimeout(id); } id = setTimeout(() => { fn(...args); id = null; }, 300); }; }; const loginUser = () => { if (isValidEmail && isValidPassword) { signInWithEmailAndPassword(auth, email, password) .then(data => {console.log(data.user) console.log('User signed in successfully!'); router.push('/profiles'); }) // Navigate to the home screen or other desired screen .catch(error => { console.error(error); // Display an error message to the user }); } }; return (
Create account
Recover