import {useAuth} from "Frontend/util/auth"; import {useEffect, useState} from "react"; import {Button, Card, CardBody, CardHeader, Link, useDisclosure} from "@nextui-org/react"; import {useNavigate} from "react-router-dom"; import {Form, Formik} from "formik"; import Input from "Frontend/components/general/Input"; import PasswordResetModal from "Frontend/components/general/PasswordResetModal"; import SignUpModal from "Frontend/components/general/SignUpModal"; import {RegistrationEndpoint} from "Frontend/generated/endpoints"; export default function LoginView() { const {state, login} = useAuth(); const navigate = useNavigate(); const passwordResetModal = useDisclosure(); const signUpModal = useDisclosure(); const [url, setUrl] = useState(); const [signUpAllowed, setSignUpAllowed] = useState(false); useEffect(() => { if (state.user) { const path = url ? new URL(url, document.baseURI).pathname : '/' navigate(path, {replace: true}); } else { RegistrationEndpoint.isSelfRegistrationAllowed().then(setSignUpAllowed); } }, [state.user]); async function tryLogin(values: any, formik: any) { const {error} = await login(values.username, values.password); if (error) { formik.setFieldError("username", " "); // Mark the field red, but don't show an error message formik.setFieldError("password", "Invalid username and/or password."); } } return (
Gameyfin Logo {(formik: { isSubmitting: any; }) => (
Forgot password?
{signUpAllowed && }
)}
); }