You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1021 B
TypeScript
49 lines
1021 B
TypeScript
import { z } from 'zod'
|
|
|
|
const userSchema = z.object({
|
|
email: z.string().email(),
|
|
password: z.string(),
|
|
})
|
|
|
|
const returnMain = () => {
|
|
navigateTo('/')
|
|
}
|
|
|
|
const userSignOut = async () => {
|
|
const supabase = useSupabaseAuthClient()
|
|
|
|
const { error } = await supabase.auth.signOut()
|
|
|
|
if (error) return error
|
|
|
|
returnMain()
|
|
}
|
|
|
|
const userSignIn = async (email: unknown, password: unknown) => {
|
|
const parsedUser = userSchema.safeParse({ email, password })
|
|
|
|
if (!parsedUser.success) return
|
|
|
|
const { error } = await useSupabaseAuthClient().auth.signInWithPassword(
|
|
parsedUser.data
|
|
)
|
|
|
|
if (error) return error
|
|
|
|
returnMain()
|
|
}
|
|
|
|
const userSignUp = async (email: unknown, password: unknown) => {
|
|
const parsedUser = userSchema.safeParse({ email, password })
|
|
|
|
if (!parsedUser.success) return
|
|
|
|
const { error } = await useSupabaseAuthClient().auth.signUp(parsedUser.data)
|
|
|
|
if (error) return error
|
|
|
|
returnMain()
|
|
}
|
|
|
|
export { userSignIn, userSignOut, userSignUp }
|