// frontend/lib/auth.js 'use client'; import { createContext, useContext, useEffect, useState, useCallback } from "react"; const AuthContext = createContext({ user: null, isAuthenticated: false, loading: true, logout: () => {}, }); export function AuthProvider({ children }) { const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { fetch("/api/auth/me", { credentials: "include" }) .then((res) => (res.ok ? res.json() : null)) .then((data) => setUser(data?.user ?? null)) .finally(() => setLoading(false)); }, []); const logout = useCallback(async () => { try { await fetch("/api/auth/logout", { method: "POST", credentials: "include" }); } finally { window.location.href = "/login"; } }, []); return ( {children} ); } export function useAuth() { return useContext(AuthContext); }