import Image from 'react-bootstrap/Image' import { StaticLayout } from '@/components/layout' import { getGetServerSideProps } from '@/api/ssrApollo' import { useRouter } from 'next/router' import { useState, useEffect, useCallback } from 'react' import { Form, SubmitButton, MultiInput } from '@/components/form' import { emailTokenSchema } from '@/lib/validate' // force SSR to include CSP nonces export const getServerSideProps = getGetServerSideProps({ query: null }) export default function Email () { const router = useRouter() const [callback, setCallback] = useState(null) // callback.email, callback.callbackUrl useEffect(() => { setCallback(JSON.parse(window.sessionStorage.getItem('callback'))) }, []) // build and push the final callback URL const pushCallback = useCallback((token) => { const params = new URLSearchParams() if (callback.callbackUrl) params.set('callbackUrl', callback.callbackUrl) params.set('token', token) params.set('email', callback.email.toLowerCase()) const url = `/api/auth/callback/email?${params.toString()}` router.push(url) }, [callback, router]) return (

Check your email

a magic code has been sent to {callback ? callback.email : 'your email address'}

pushCallback(token)} disabled={!callback} />
) } export const MagicCodeForm = ({ onSubmit, disabled }) => { return (
{ onSubmit(values.token.toLowerCase()) // token is displayed in uppercase but we need to check it in lowercase }} > login ) }