import { Box, Button, Container, Grid, IconButton, InputAdornment, TextField, Typography, } from '@mui/material'; import { useFormik } from 'formik'; import { signIn } from 'next-auth/react'; import { useTranslation } from 'next-i18next'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { useState } from 'react'; import { BASE_PAGE, FORGOT_PASSWORD_PAGE, REGISTER_PAGE, } from '../../../constants/pages'; import { loginSchema } from '../../../schemas/loginSchema'; import ErrorMessageComponent from '../../mui/ErrorMessageComponent'; interface Values { username: string; password: string; } const LoginForm = () => { const { t } = useTranslation(['forms', 'login']); const [showPassword, setShowPassword] = useState(false); const handleClickShowPassword = () => setShowPassword(!showPassword); const handleMouseDownPassword = () => setShowPassword(!showPassword); const router = useRouter(); const [error, setError] = useState({ hasError: false, errorMessage: '' }); const submitHandler = async (values: Values) => { const result = await signIn('credentials', { redirect: false, username: values.username, password: values.password, }); if (!result?.error) { router.replace(BASE_PAGE); } else { setError({ hasError: true, errorMessage: result?.error }); } }; const formik = useFormik({ initialValues: { username: '', password: '', }, validationSchema: loginSchema, onSubmit: submitHandler, validateOnBlur: true, enableReinitialize: true, }); return ( {t('login:Title')} {error.hasError && } ), }} /> {t('login:ForgotPassword')} {t('login:NoAccount')} ); }; export default LoginForm;