import Avatar from '@mui/material/Avatar'; import Button from '@mui/material/Button'; import CssBaseline from '@mui/material/CssBaseline'; import TextField from '@mui/material/TextField'; import FormControlLabel from '@mui/material/FormControlLabel'; import Checkbox from '@mui/material/Checkbox'; import Link from '@mui/material/Link'; import Grid from '@mui/material/Grid'; import Box from '@mui/material/Box'; import LockOutlinedIcon from '@mui/icons-material/LockOutlined'; import Typography from '@mui/material/Typography'; import Container from '@mui/material/Container'; import { createTheme, ThemeProvider } from '@mui/material/styles'; import { lightGreen } from '@mui/material/colors'; import { categoriesApi, useGetLoginMutation } from '../../store/categoriesApi'; import { useDispatch, useSelector } from 'react-redux'; import { setCredentials } from '../../store/authSlice'; import { Navigate, Link as RoterLink, useNavigate, useLocation } from 'react-router-dom'; import { Alert, Snackbar } from '@mui/material'; import { useState } from 'react'; function jwtDecode(token) { let result; try { let secondPartToken = token.split('.')[1]; result = JSON.parse(atob(secondPartToken)); } catch (e) { } return result; } const theme = createTheme(); export default function SignIn() { const navigate = useNavigate() const location = useLocation() const fromPage = location.state?.from?.pathname || '/' console.log(fromPage) const [open, setOpen] = useState(false); const handleClose = (event, reason) => { if (reason === 'clickaway') { return; } setOpen(false); }; const userAuth = useSelector((state) => state.auth.user) const dispatch = useDispatch() const [loginQuery, { isLoading }] = useGetLoginMutation() const handleSubmit = async (event) => { event.preventDefault(); const dataForm = new FormData(event.currentTarget); const { data } = await loginQuery({ login: dataForm.get('email'), password: dataForm.get('password') }) if (data) { const token = data.login const user = jwtDecode(token) if (user) { dispatch(setCredentials({ user, token })) console.log(user.sub.id) dispatch( categoriesApi.endpoints.getUserById.initiate(user.sub.id)) navigate(fromPage, {replace: true}) } else { setOpen(true) } } }; return ( <> {userAuth ? : <> Вы ввели неправильный логин или пароль! Войти } label="Запомнить меня" /> Забыли пароль? {"У Вас нет аккаунта? Зарегистрироваться"} } ); }