import axios from 'axios'; import { useEffect, useState } from 'react'; import { useLocation } from 'react-router-dom'; import BackendError, { ErrorInfo } from '../components/BackendError'; import SubmitButton from '../components/Common/SubmitButton'; import TextInput from '../components/Common/TextInput'; import TextURL from '../components/Common/TextURL'; import ExpectedAnonymous from '../components/ExpectedAnonymous'; import { useAuth } from '../context/AuthContext'; import { useConceptNavigation } from '../context/NagivationContext'; import { IUserLoginData } from '../models/library'; import { resources } from '../utils/constants'; function ProcessError({error}: {error: ErrorInfo}): React.ReactElement { if (axios.isAxiosError(error) && error.response && error.response.status === 400) { return (
На Портале отсутствует такое сочетание имени пользователя и пароля
); } else { return ( ); } } function LoginPage() { const location = useLocation(); const { navigateTo, navigateHistory } = useConceptNavigation(); const search = useLocation().search; const { user, login, loading, error, setError } = useAuth(); const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); useEffect(() => { const name = new URLSearchParams(search).get('username'); setUsername(name ?? ''); setPassword(''); }, [search]); useEffect(() => { setError(undefined); }, [username, password, setError]); function handleSubmit(event: React.FormEvent) { event.preventDefault(); if (!loading) { const data: IUserLoginData = { username: username, password: password }; login(data, () => { if (location.key !== 'default') { navigateHistory(-1); } else { navigateTo('/library'); } }); } } if (user) { return (); } return (
Концепт Портал setUsername(event.target.value)} /> setPassword(event.target.value)} />
{error ? : null} ); } export default LoginPage;