import { useForm, SubmitHandler } from 'react-hook-form'; import { AxiosError, 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, Field, Input, Link, Spinner, Text } from '@fluentui/react-components'; import { pages } from '../../constants/app'; 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: unknown) { if ((error as AxiosError).response?.data) { const err = (error as AxiosError).response?.data setError('password', { message: (err as { detail: string })?.detail }) } } }; return (
Вход
Восстановить пароль {pages.find(page => page.path === '/auth/signup')?.enabled && }
); }; export default SignIn;