import { useState, useEffect } from "react"; import MyAlert from "../components/myChakra/MyAlert"; import { Button, Card, Field, Input, Stack } from "@chakra-ui/react"; import { setIsLoggedInAtom, triggerLogoutAtom } from "@/states/Atoms"; import { useAtom } from "jotai"; import Cookies from "js-cookie"; import { Navigate, useNavigate } from "react-router-dom"; import { PasswordInput } from "@/components/ui/password-input"; import { useTranslation } from "react-i18next"; import { Footer } from "@/components/footer/Footer"; import { API_BASE } from "@/config/api.config"; export const LoginPage = () => { const { t } = useTranslation(); const [isLoggedIn, setIsLoggedIn] = useAtom(setIsLoggedInAtom); const [triggerLogout, setTriggerLogout] = useAtom(triggerLogoutAtom); const navigate = useNavigate(); useEffect(() => { if (isLoggedIn) { navigate("/", { replace: true }); window.location.reload(); // Wenn entfernt: Seite bleibt schwarz und muss manuell neu geladen werden } }, [isLoggedIn, navigate]); const loginFnc = async (username: string, password: string) => { const response = await fetch(`${API_BASE}/api/users/login`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ username, password }), }); const data = await response.json(); if (!response.ok) { return { success: false, message: data.message ?? t("login-failed"), description: data.description ?? "", }; } Cookies.set("token", data.token); setIsLoggedIn(true); return { success: true }; }; const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [isError, setIsError] = useState(false); const [errorMsg, setErrorMsg] = useState(""); const [errorDsc, setErrorDsc] = useState(""); const handleLogin = async () => { const result = await loginFnc(username, password); if (!result.success) { setErrorMsg(result.message); setErrorDsc(result.description); setIsError(true); return; } setTriggerLogout(false); navigate("/", { replace: true }); }; if (isLoggedIn) { return ; } return (
e.preventDefault()}> {t("login")} {t("enter-credentials")} {t("username")} setUsername(e.target.value)} /> {t("password")} setPassword(e.target.value)} /> {isError && ( )} {triggerLogout && ( )}
); };