import {useTranslation} from 'react-i18next'; import Layout from '../../layouts/Centered'; import { Button, Card, CardContent, CardMedia, Container, Stack, TextField, Typography, FormHelperText, } from '@mui/material'; import Logo from '../../components/Logo'; import {getSession} from 'next-auth/react'; import pageUtils from '../../lib/pageUtils'; import Cookies from 'cookies'; import {useState} from 'react'; import LoginGoogle from '../../containers/LoginGoogle'; import {useSendMagicLinkMutation} from '../../generated/graphql'; interface Props { error?: string; } const Login = (props: Props) => { const {error} = props; const {t, i18n} = useTranslation(); const [email, setEmail] = useState(''); const [sent, setSent] = useState(false); const [sendMagicLink] = useSendMagicLinkMutation(); const handleSubmit = async (e: React.FormEvent) => { try { if (email) await sendMagicLink({variables: {email, lang: i18n.language}}); setSent(true); } catch (error) { console.error(error); } }; return ( {t('signin.title')} {error && ( {t(errorsMap[error])} )} {!sent && ( <> setEmail(e.target.value)} type="email" /> {t('signin.or')} )} {sent && ( {t`signin.check_email`} )} ); }; const errorsMap = { CredentialsSignin: 'signin.errors.CredentialsSignin', }; export const getServerSideProps = async (context: any) => { const session = await getSession(context); if (session) return { redirect: { destination: '/', permanent: false, }, }; else return pageUtils.getServerSideProps(async ctx => { const error = ctx.query?.error || null; const redirectPath = ctx.query?.redirectPath; if (redirectPath) { const cookies = new Cookies(ctx.req, ctx.res); cookies.set('redirectPath', redirectPath); } return {props: {error}}; })(context); }; export default Login;