Initial commit: application de gestion des competences

This commit is contained in:
2026-05-18 00:01:11 +02:00
commit a3b331ada6
47 changed files with 11328 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
import { createContext, useContext, useEffect, useState } from 'react'
import { supabase } from '@/lib/supabase'
const AuthContext = createContext(null)
export function AuthProvider({ children }) {
const [user, setUser] = useState(null)
const [profile, setProfile] = useState(null)
const [loading, setLoading] = useState(true)
useEffect(() => {
supabase.auth.getSession().then(({ data: { session } }) => {
if (session?.user) {
setUser(session.user)
fetchProfile(session.user.id)
}
setLoading(false)
})
const { data: { subscription } } = supabase.auth.onAuthStateChange((_event, session) => {
if (session?.user) {
setUser(session.user)
fetchProfile(session.user.id)
} else {
setUser(null)
setProfile(null)
}
})
return () => subscription.unsubscribe()
}, [])
async function fetchProfile(userId) {
const { data } = await supabase
.from('members')
.select('*')
.eq('id', userId)
.single()
setProfile(data)
}
async function signIn(email, password) {
return supabase.auth.signInWithPassword({ email, password })
}
async function signOut() {
await supabase.auth.signOut()
setUser(null)
setProfile(null)
}
return (
<AuthContext.Provider value={{ user, profile, loading, signIn, signOut, fetchProfile }}>
{children}
</AuthContext.Provider>
)
}
export const useAuth = () => useContext(AuthContext)