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.

50 lines
1.0 KiB
TypeScript

import { z } from 'zod'
const userSchema = z.object({
email: z.string().email(),
password: z.string(),
})
const returnMain = () => {
navigateTo('/notes')
}
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 { data: user, 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 { data: user, error } = await useSupabaseAuthClient().auth.signUp(
parsedUser.data
)
if (error) return error
returnMain()
}
export { userSignIn, userSignOut, userSignUp }