38 lines
848 B
TypeScript
38 lines
848 B
TypeScript
'use client'
|
|
|
|
import { createClient } from '@/lib/supabase'
|
|
import { User } from '@supabase/supabase-js'
|
|
import { useEffect, useState } from 'react'
|
|
|
|
export function useAuth() {
|
|
const [user, setUser] = useState<User | null>(null)
|
|
const [loading, setLoading] = useState(true)
|
|
const supabase = createClient()
|
|
|
|
useEffect(() => {
|
|
const getUser = async () => {
|
|
const { data: { user } } = await supabase.auth.getUser()
|
|
setUser(user)
|
|
setLoading(false)
|
|
}
|
|
|
|
getUser()
|
|
|
|
const { data: { subscription } } = supabase.auth.onAuthStateChange((event, session) => {
|
|
setUser(session?.user ?? null)
|
|
setLoading(false)
|
|
})
|
|
|
|
return () => subscription.unsubscribe()
|
|
}, [supabase.auth])
|
|
|
|
const signOut = async () => {
|
|
await supabase.auth.signOut()
|
|
}
|
|
|
|
return {
|
|
user,
|
|
loading,
|
|
signOut
|
|
}
|
|
} |