import React, { useState, ChangeEvent, FormEvent } from 'react'; import { useForm, SubmitHandler } from 'react-hook-form'; import { TextField, Button, Container, Typography, Box } from '@mui/material'; import axios, { AxiosResponse } from 'axios'; import { SignInFormData, ApiResponse } from '../../types/auth'; import { UserData, useAuthStore } from '../../store/auth'; import { useNavigate } from 'react-router-dom'; import axiosInstance from '../../http/axiosInstance'; import AuthService from '../../services/AuthService'; const SignIn = () => { const { register, handleSubmit, formState: { errors } } = useForm({ defaultValues: { username: '', password: '', grant_type: 'password', scope: '', client_id: '', client_secret: '' } }) const authStore = useAuthStore(); const navigate = useNavigate(); const onSubmit: SubmitHandler = async (data) => { const formBody = new URLSearchParams(); for (const key in data) { formBody.append(key, data[key as keyof SignInFormData] as string); } try { const response: AxiosResponse = await axiosInstance.post(`/auth/login`, formBody, { headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, }); console.log('Вход произошел успешно:', response.data); const token = response.data.access_token const userDataResponse: AxiosResponse = await AuthService.getCurrentUser(token) console.log('Пользователь:', userDataResponse.data) authStore.setUserData(JSON.stringify(userDataResponse.data)) authStore.login(token) navigate('/'); } catch (error) { console.error('Ошибка при входе:', error); } }; return ( Вход
); }; export default SignIn;