import { type MouseEvent, useState } from 'react'; import { Link, useLocation, useNavigate } from 'react-router-dom'; import clsx from 'clsx'; import * as Yup from 'yup'; import { useFormik } from 'formik'; import { KeenIcon } from '@/components'; import { toAbsoluteUrl } from '@/utils'; import { useAuthContext } from '@/auth'; import { useLayout } from '@/providers'; import { Alert } from '@/components'; import moment from 'moment'; const loginSchema = Yup.object().shape({ username: Yup.string().required('Username is required'), password: Yup.string() .min(3, 'Minimum 3 symbols') .max(50, 'Maximum 50 symbols') .required('Password is required'), remember: Yup.boolean() }); const initialValues = { username: '', password: '', remember: false }; const Login = () => { const [loading, setLoading] = useState(false); const { login } = useAuthContext(); const navigate = useNavigate(); const location = useLocation(); const from = location.state?.from?.pathname || '/'; const [showPassword, setShowPassword] = useState(false); const { currentLayout } = useLayout(); const formik = useFormik({ initialValues, validationSchema: loginSchema, onSubmit: async (values, { setStatus, setSubmitting }) => { setLoading(true); try { if (!login) throw new Error('JWTProvider is required for this form.'); await login(values.username, values.password); if (values.remember) { localStorage.setItem('username', values.username); } else { localStorage.removeItem('username'); } navigate(from, { replace: true }); } catch (error: any) { if (error.response && error.response.data) { setStatus(error.response.data.message); } else { setStatus('The login details are incorrect'); } setSubmitting(false); } setLoading(false); } }); const togglePassword = (event: MouseEvent) => { event.preventDefault(); setShowPassword(!showPassword); }; const handleKeyPress = (e: { key: string }) => { if (e.key === 'Enter') { formik.handleSubmit(); } }; return (

Sign in

{formik.status && {formik.status}}
{formik.touched.username && formik.errors.username && ( {formik.errors.username} )}
{formik.touched.password && formik.errors.password && ( {formik.errors.password} )}
Forgot Password?

Copyright {moment().year()} © Telkomcel All rights reserved.

); }; export { Login };