import React from 'react'; import { ViewIcon, ViewOffIcon } from '@chakra-ui/icons'; import { Button, Center, Container, FormControl, FormErrorMessage, Icon, Image, Input, InputGroup, InputRightElement, Link, useBoolean } from '@chakra-ui/react'; import { Link as RouterLink, createFileRoute, redirect } from '@tanstack/react-router'; import { SubmitHandler, useForm } from 'react-hook-form'; import Logo from '../assets/images/fastapi-logo.svg'; import { ApiError } from '../client'; import { Body_login_login_access_token as AccessToken } from '../client/models/Body_login_login_access_token'; import useAuth, { isLoggedIn } from '../hooks/useAuth'; export const Route = createFileRoute('/login')({ component: Login, beforeLoad: async () => { if (isLoggedIn()) { throw redirect({ to: '/', }) } } }) function Login() { const [show, setShow] = useBoolean(); const { login } = useAuth(); const [error, setError] = React.useState(null); const { register, handleSubmit, formState: { errors, isSubmitting } } = useForm({ mode: 'onBlur', criteriaMode: 'all', defaultValues: { username: '', password: '' } }); const onSubmit: SubmitHandler = async (data) => { try { await login(data); } catch (err) { const errDetail = (err as ApiError).body.detail; setError(errDetail) } }; return ( <> FastAPI logo {errors.username && {errors.username.message}} {show ? : } {error && {error} }
Forgot password?
); }; export default Login;