import React, { useEffect, useState } from 'react' function Auth(props) { const { supabaseClient, authView, setAuthView } = props const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [message, setMessage] = useState('') const [error, setError] = useState('') const [loading, setLoading] = useState(false) const handleSignIn = async (e) => { e.preventDefault() setError('') setLoading(true) const { error: signInError } = await supabaseClient.auth.signIn({ email, password, }) if (signInError) setError(signInError.message) setLoading(false) } const handleSignUp = async (e) => { e.preventDefault() setError('') setLoading(true) const { error: signUpError } = await supabaseClient.auth.signUp({ email, password, }) if (signUpError) setError(signUpError.message) setLoading(false) } const handlePasswordReset = async (e) => { e.preventDefault() setError('') setMessage('') setLoading(true) const { error } = await supabaseClient.auth.api.resetPasswordForEmail(email) if (error) setError(error.message) else setMessage('Check your email for the password reset link') setLoading(false) } const handleMagicLinkSignIn = async (e) => { e.preventDefault() setError('') setMessage('') setLoading(true) const { error } = await supabaseClient.auth.signIn({ email }) if (error) setError(error.message) else setMessage('Check your email for the magic link') setLoading(false) } return ( <> {loading &&

Loading..

} {error &&
{error}
} {message &&
{message}
} {authView === 'sign_in' ? ( <>

Sign in

handleSignIn(e)}> setEmail(e.target.value)} /> setPassword(e.target.value)} />

setAuthView('sign_up')}>Don't have an account? Sign up setAuthView('forgotten_password')}>Forgot my password
setAuthView('magic_link')}>Send magic link email ) : authView === 'sign_up' ? ( <>

Sign up

handleSignUp(e)}> setEmail(e.target.value)} /> setPassword(e.target.value)} />

setAuthView('sign_in')}>Already have an account, Sign in setAuthView('forgotten_password')}>Forgot my password
setAuthView('magic_link')}>Send magic link email ) : authView === 'forgotten_password' ? ( <>

Forgotten password

setEmail(e.target.value)} />

setAuthView('sign_up')}>Don't have an account? Sign up setAuthView('sign_in')}>Already have an account, Sign in
setAuthView('magic_link')}>Send magic link email ) : authView === 'magic_link' ? ( <>

Magic link

setEmail(e.target.value)} />

setAuthView('sign_up')}>Don't have an account? Sign up setAuthView('sign_in')}>Already have an account, Sign in ) : null} ) } function UpdatePassword({ supabaseClient }) { const [password, setPassword] = useState('') const [error, setError] = useState('') const [message, setMessage] = useState('') const [loading, setLoading] = useState(false) const handlePasswordReset = async (e) => { e.preventDefault() setError('') setMessage('') setLoading(true) const { error } = await supabaseClient.auth.update({ password }) if (error) setError(error.message) else setMessage('Your password has been updated') setLoading(false) } return ( <> {loading &&

Loading..

} {error &&
{error}
} {message &&
{message}
}

Set a new password

setPassword(e.target.value)} />
) } Auth.UpdatePassword = UpdatePassword export default Auth