Files
bigcapital/packages/webapp/src/containers/Authentication/Login.tsx
2025-10-30 19:27:29 +02:00

82 lines
1.9 KiB
TypeScript

// @ts-nocheck
import { Formik } from 'formik';
import { Link } from 'react-router-dom';
import { AppToaster as Toaster, FormattedMessage as T } from '@/components';
import AuthInsider from '@/containers/Authentication/AuthInsider';
import { useAuthLogin } from '@/hooks/query';
import LoginForm from './LoginForm';
import { LoginSchema, transformLoginErrorsToToasts } from './utils';
import {
AuthFooterLinks,
AuthFooterLink,
AuthInsiderCard,
} from './_components';
import { useAuthMetaBoot } from './AuthMetaBoot';
const initialValues = {
crediential: '',
password: '',
keepLoggedIn: false,
};
/**
* Login page.
*/
export default function Login() {
const { mutateAsync: loginMutate } = useAuthLogin();
const handleSubmit = (values, { setSubmitting }) => {
loginMutate({
email: values.crediential,
password: values.password,
}).catch(({ response }) => {
const { data: error } = response;
const toastMessages = transformLoginErrorsToToasts(error);
toastMessages.forEach((toastMessage) => {
Toaster.show(toastMessage);
});
setSubmitting(false);
});
};
return (
<AuthInsider>
<AuthInsiderCard>
<Formik
initialValues={initialValues}
validationSchema={LoginSchema}
onSubmit={handleSubmit}
component={LoginForm}
/>
</AuthInsiderCard>
<LoginFooterLinks />
</AuthInsider>
);
}
function LoginFooterLinks() {
const { signupDisabled } = useAuthMetaBoot();
return (
<AuthFooterLinks>
{!signupDisabled && (
<AuthFooterLink>
<T id={'dont_have_an_account'} />{' '}
<Link to={'/auth/register'}>
<T id={'sign_up'} />
</Link>
</AuthFooterLink>
)}
<AuthFooterLink>
<Link to={'/auth/send_reset_password'}>
<T id={'forgot_my_password'} />
</Link>
</AuthFooterLink>
</AuthFooterLinks>
);
}