'use client'; import axios from 'axios'; import clsx from 'clsx'; import { useEffect, useState } from 'react'; import { useConceptNavigation } from '@/app/Navigation/NavigationContext'; import { urls } from '@/app/urls'; import { useAuthSuspense } from '@/backend/auth/useAuth'; import { useLogin } from '@/backend/auth/useLogin'; import ExpectedAnonymous from '@/components/ExpectedAnonymous'; import { ErrorData } from '@/components/info/InfoError'; import SubmitButton from '@/components/ui/SubmitButton'; import TextInput from '@/components/ui/TextInput'; import TextURL from '@/components/ui/TextURL'; import useQueryStrings from '@/hooks/useQueryStrings'; import { resources } from '@/utils/constants'; function LoginPage() { const router = useConceptNavigation(); const query = useQueryStrings(); const { isAnonymous } = useAuthSuspense(); const { login, isPending, error, reset } = useLogin(); const [username, setUsername] = useState(query.get('username') ?? ''); const [password, setPassword] = useState(''); useEffect(() => { reset(); }, [username, password, reset]); function handleSubmit(event: React.FormEvent) { event.preventDefault(); if (!isPending) { login(username, password, () => { if (router.canBack()) { router.back(); } else { router.push(urls.library); } }); } } if (!isAnonymous) { return ; } return (
Концепт Портал setUsername(event.target.value)} /> setPassword(event.target.value)} />
{error ? : null} ); } export default LoginPage; // ====== Internals ========= function ProcessError({ error }: { error: ErrorData }): React.ReactElement { if (axios.isAxiosError(error) && error.response && error.response.status === 400) { return (
На Портале отсутствует такое сочетание имени пользователя и пароля
); } throw error as Error; }