diff --git a/SerpentRace_Frontend/src/api/userApi.js b/SerpentRace_Frontend/src/api/userApi.js index 7a393fdc..599defc5 100644 --- a/SerpentRace_Frontend/src/api/userApi.js +++ b/SerpentRace_Frontend/src/api/userApi.js @@ -48,7 +48,7 @@ apiClient.interceptors.response.use( export const login = async (username, password) => { try { const response = await apiClient.post("/users/login", { username, password }) - return response.data + return response // teljes Axios response visszaadása } catch (error) { throw error } @@ -58,7 +58,7 @@ export const login = async (username, password) => { export const register = async (username, email, password, fname, lname, phone) => { try { const response = await apiClient.post("/users/create", { username, email, password, fname, lname, phone }) - return { ...response.data, status: response.status } + return response // teljes Axios response visszaadása } catch (error) { throw error } diff --git a/SerpentRace_Frontend/src/pages/Auth/LoginForm.jsx b/SerpentRace_Frontend/src/pages/Auth/LoginForm.jsx index f06de31c..2fd2a6d2 100644 --- a/SerpentRace_Frontend/src/pages/Auth/LoginForm.jsx +++ b/SerpentRace_Frontend/src/pages/Auth/LoginForm.jsx @@ -5,7 +5,7 @@ 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 { useLocation, useNavigate } from "react-router-dom" import { login } from "../../api/userApi" export default function LoginForm() { @@ -13,7 +13,9 @@ export default function LoginForm() { const [password, setPassword] = useState("") const [error, setError] = useState("") const location = useLocation() + const navigate = useNavigate() const [showSuccess, setShowSuccess] = useState(false) + const [showErrorPopup, setShowErrorPopup] = useState(false) useEffect(() => { if (location.state && location.state.success) { @@ -29,22 +31,48 @@ export default function LoginForm() { 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 } // Backend API login(email, password) - .then((data) => { - console.log(data) - console.log("Bejelentkezés:", { email, password }) + .then((response) => { + if (response && response.status === 200) { + // JWT token mentése localStorage-be + if (response.data && response.data.token) { + localStorage.setItem("jwtToken", response.data.token) + } + navigate("/home") + } else { + let msg = "Hibás bejelentkezési adatok." + if (response && response.data && response.data.error) { + msg = response.data.error + } + setError(msg) + setShowErrorPopup(true) + setTimeout(() => setShowErrorPopup(false), 2000) + } }) .catch((error) => { - setError("Hibás bejelentkezési adatok.") + let msg = "Hibás bejelentkezési adatok." + if (error && error.response && error.response.data && error.response.data.error) { + msg = error.response.data.error + } else if (error && error.message) { + msg = error.message + } + setError(msg) + setShowErrorPopup(true) + setTimeout(() => setShowErrorPopup(false), 2000) }) } @@ -62,7 +90,11 @@ export default function LoginForm() { Sikeres regisztráció! Az email ellenőrzése után be tudsz lépni. )} - {error &&
{error}
} + {showErrorPopup && error && ( +
+ {error} +
+ )}