import { useState } from "react"; import * as Yup from "yup"; import clsx from "clsx"; import { Link } from "react-router-dom"; import { useFormik } from "formik"; import { getUserByToken, login } from "../core/_requests"; import { toAbsoluteUrl } from "../../../../_digifi/helpers"; import { useAuth } from "../core/Auth"; const loginSchema = Yup.object().shape({ email: Yup.string() .email("Wrong email format") .min(3, "Minimum 3 symbols") .max(50, "Maximum 50 symbols") .required("Email is required"), password: Yup.string() .min(3, "Minimum 3 symbols") .max(50, "Maximum 50 symbols") .required("Password is required"), }); const initialValues = { email: "", password: "", }; // email: "admin@demo.com", // password: "demo", /* Formik+YUP+Typescript: https://jaredpalmer.com/formik/docs/tutorial#getfieldprops https://medium.com/@maurice.de.beijer/yup-validation-and-typescript-and-formik-6c342578a20e */ export function Login() { const [loading, setLoading] = useState(false); const { saveAuth, setCurrentUser } = useAuth(); const formik = useFormik({ initialValues, validationSchema: loginSchema, onSubmit: async (values, { setStatus, setSubmitting }) => { setLoading(true); try { const { data: auth } = await login(values.email, values.password); saveAuth(auth); const { data: user } = await getUserByToken(auth.api_token); setCurrentUser(user); } catch (error) { console.error(error); saveAuth(undefined); setStatus("The login details are incorrect"); setSubmitting(false); setLoading(false); } }, }); return (
{/* begin::Heading */}

Sign In

{/* begin::Heading */} {/* begin::Login options */}
{/* end::Login options */} {/* begin::Separator */}
{/**/} {/* Or with email*/} {/**/}
{/* end::Separator */} {formik.status ? (
{formik.status}
) : ( //
//
null )} {/* begin::Form group */}
{formik.touched.email && formik.errors.email && (
{formik.errors.email}
)}
{/* end::Form group */} {/* begin::Form group */}
{formik.touched.password && formik.errors.password && (
{formik.errors.password}
)}
{/* end::Form group */} {/* begin::Wrapper */}
{/* begin::Link */} Forgot Password ? {/* end::Link */}
{/* end::Wrapper */} {/* begin::Action */}
{/* end::Action */} {/*
*/} {/* Not a Member yet?{" "}*/} {/* */} {/* Sign up*/} {/* */} {/*
*/} ); }