"use client"; import { createContext, useContext, useEffect, useState } from "react"; import { onAuthStateChanged, signOut as firebaseSignOut, User } from "firebase/auth"; import { auth } from "@/lib/firebase"; interface AuthContextType { user: User | null; loading: boolean; isAdmin: boolean; signOut: () => Promise; } const AuthContext = createContext({ user: null, loading: true, isAdmin: false, signOut: async () => {}, }); export function AuthProvider({ children }: { children: React.ReactNode }) { const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); const [isAdmin, setIsAdmin] = useState(false); useEffect(() => { return onAuthStateChanged(auth, async (u) => { setUser(u); setLoading(false); if (u) { document.cookie = "drb_session=1; path=/; SameSite=Strict"; // Read custom claims to determine admin status const result = await u.getIdTokenResult(true); setIsAdmin(!!result.claims.admin); } else { document.cookie = "drb_session=; path=/; max-age=0"; setIsAdmin(false); } }); }, []); async function signOut() { await firebaseSignOut(auth); document.cookie = "drb_session=; path=/; max-age=0"; } return ( {children} ); } export function useAuth() { return useContext(AuthContext); }