// src/pages/Auth/LoginForm.jsx import InputBox from "../../components/Inputs/InputBox" import Button from "../../components/Buttons/Button" import { motion } from "framer-motion" import { useState, useEffect } from "react" import { useLocation } from "react-router-dom" import HandleNavigate from "../../utils/HandleNavigate/HandleNavigate" import { login, forgotPassword } from "../../api/userApi" import { FaArrowLeft } from "react-icons/fa" export default function LoginForm() { const [email, setEmail] = useState("") const [password, setPassword] = useState("") const [error, setError] = useState("") const location = useLocation() const { goHome, goLanding } = HandleNavigate() const [showSuccess, setShowSuccess] = useState(false) const [showErrorPopup, setShowErrorPopup] = useState(false) const [showForgotPasswordModal, setShowForgotPasswordModal] = useState(false) const [forgotEmail, setForgotEmail] = useState("") const [forgotPasswordMessage, setForgotPasswordMessage] = useState("") const [successMessage, setSuccessMessage] = useState("") const [isSendingEmail, setIsSendingEmail] = useState(false) useEffect(() => { if (location.state && location.state.success) { const message = location.state.message || "Sikeres regisztráció! Az email ellenőrzése után be tudsz lépni." setSuccessMessage(message) setShowSuccess(true) setTimeout(() => { setShowSuccess(false) setSuccessMessage("") }, 4000) } }, [location.state]) function validateEmail(email) { return /\S+@\S+\.\S+/.test(email) } const handleSubmit = (e) => { e.preventDefault() setError("") setShowErrorPopup(false) if (!email || !password) { setError("Minden mező kitöltése kötelező.") setShowErrorPopup(true) setTimeout(() => setShowErrorPopup(false), 2000) return } if (!validateEmail(email)) { setError("Hibás email formátum.") setShowErrorPopup(true) setTimeout(() => setShowErrorPopup(false), 2000) return } login(email, password) .then((response) => { if (response && response.status === 200) { if (response.data && response.data.user) { localStorage.setItem("username", response.data.user.username) localStorage.setItem("authLevel", response.data.user.authLevel) } goHome() } else { setError("Hibás bejelentkezési adatok.") setShowErrorPopup(true) setTimeout(() => setShowErrorPopup(false), 2000) } }) .catch(() => { setError("Hibás bejelentkezési adatok.") setShowErrorPopup(true) setTimeout(() => setShowErrorPopup(false), 2000) }) } const handleForgotPassword = async (e) => { e.preventDefault() setForgotPasswordMessage("") if (!forgotEmail || !validateEmail(forgotEmail)) { setForgotPasswordMessage("Kérlek adj meg egy érvényes email címet!") return } setIsSendingEmail(true) try { await forgotPassword(forgotEmail) setForgotPasswordMessage("Jelszó visszaállító email elküldve! Ellenőrizd a postaládád.") setTimeout(() => { setShowForgotPasswordModal(false) setForgotEmail("") setForgotPasswordMessage("") setIsSendingEmail(false) }, 3000) } catch (error) { setForgotPasswordMessage("Hiba történt. Próbáld újra később!") setIsSendingEmail(false) } } return ( {/* 🔙 Vissza nyíl gomb — most pontosan a fehér box bal felső sarkában */}
goLanding()} > Vissza a főoldalra

Bejelentkezés

{showSuccess && (
{successMessage || "Sikeres művelet!"}
)} {showErrorPopup && error && (
{error}
)}
setEmail(e.target.value)} /> setPassword(e.target.value)} /> {/* Elfelejtett jelszó link */}
setShowForgotPasswordModal(true)} className="text-sm text-green-600 hover:text-green-700 hover:underline cursor-pointer font-medium" > Elfelejtetted a jelszavad?
)}
) }