import * as React from 'react'; import toast, { Toaster } from 'react-hot-toast'; import jwt_decode from "jwt-decode"; import { Paper, Box, Grid, Checkbox, FormControlLabel, Typography, TextField, CssBaseline, Button, Avatar, Backdrop, CircularProgress, } from '@mui/material' import { createTheme, ThemeProvider } from '@mui/material/styles'; import PersonIcon from '@mui/icons-material/Person'; import { useNavigate } from 'react-router-dom' import { Copyright } from '../Components/Footer.js' import { Link } from 'react-router-dom' import useAuth from '../Auth/useAuth'; import { useFormik } from 'formik'; import * as Yup from 'yup'; import { Service } from '../Utils/HTTP.js' const LoginSchema = Yup.object().shape({ email : Yup .string() // .email('El correo debe ser válido') .required('El correo o usuario es requerido'), password : Yup .string() .required('El campo contraseña es requerido') .min(5, 'La contraseña debe contener mínimo 5 caracteres') }) const theme = createTheme(); export function Login() { let auth = useAuth(); let navigate = useNavigate() const [open, setOpen] = React.useState(false); const handleClose = () => { setOpen(false); }; const formik = useFormik({ initialValues: { email: '', password: '', }, validationSchema: LoginSchema, onSubmit: async (values) => { let { email, password } = values setOpen(true) let request = new Service(`/user?user=${email}&password=${password}`) request .post({}) .then( response => { console.log("Service Response :: ", response) let { token, nombre, apelidos } = response; toast.success(`Bienvenido ${nombre} ${apelidos}!!`) token = token.replace("Bearer ", "") let user_permissions = jwt_decode(token); console.log("TOKEN >> ", token, 'decrypt', user_permissions ) setTimeout( () => { setOpen(false) auth.login(token) }, 2000) }) .catch( err => { setOpen(false) toast.error("Ups! usuario o contraseña incorrectos") console.log("ERROR ", err) }) }, }); React.useEffect(() => { if(auth.isLogged()){ return navigate('/dashboard/home') } }, [auth,navigate]) return ( t.palette.mode === 'light' ? t.palette.grey[50] : t.palette.grey[900], backgroundSize: 'cover', backgroundPosition: 'center', }} /> Ingresar } label="Recordarme" /> ¿Olvidaste tu contraseña? {"¿No tienes cuenta? Regístrate"} theme.zIndex.drawer + 1 }} open={open} onClick={handleClose} > ); }