import { useForm, SubmitHandler } from 'react-hook-form'; import { AxiosResponse } from 'axios'; import { ApiResponse, LoginFormData } from '../../interfaces/auth'; import { login, setUserData } from '../../store/auth'; import { useNavigate } from 'react-router-dom'; import AuthService from '../../services/AuthService'; import UserService from '../../services/UserService'; import { Button, Flex, Loader, Paper, Text, TextInput } from '@mantine/core'; const SignIn = () => { const { register, handleSubmit, setError, formState: { errors, isSubmitting, isValid } } = useForm({ defaultValues: { username: '', password: '', grant_type: 'password', scope: '', client_id: '', client_secret: '' } }) const navigate = useNavigate(); const onSubmit: SubmitHandler = async (data) => { const formBody = new URLSearchParams(); for (const key in data) { formBody.append(key, data[key as keyof LoginFormData] as string); } try { const response: AxiosResponse = await AuthService.login(formBody) const token = response.data.access_token const userDataResponse: AxiosResponse = await UserService.getCurrentUser(token) setUserData(JSON.stringify(userDataResponse.data)) login(token) navigate('/'); } catch (error: any) { setError('password', { message: error?.response?.data?.detail }) } }; return ( Вход
{/* */}
); }; export default SignIn;