diff --git a/src/app/auth/login/page.tsx b/src/app/auth/login/page.tsx index 884d197..f942dc8 100644 --- a/src/app/auth/login/page.tsx +++ b/src/app/auth/login/page.tsx @@ -4,9 +4,11 @@ import Link from "next/link" import { useRouter } from "next/navigation" import { useState } from "react" import { authClient } from "@/lib/auth-client" +import { useSession } from "@/components/SessionProvider" export default function LoginPage() { const router = useRouter() + const { refreshSession } = useSession() const [error, setError] = useState("") const [loading, setLoading] = useState(false) @@ -29,8 +31,15 @@ export default function LoginPage() { if (result.error) { setError(result.error.message || "Failed to sign in") } else { - // Navigate to admin page - Better Auth will handle session update + // Refresh the session after successful login + try { + await refreshSession() + } catch (err) { + console.error("Failed to refresh session:", err) + } + // Navigate to admin page router.push("/admin") + router.refresh() } } catch { setError("An unexpected error occurred") diff --git a/src/components/Navigation.tsx b/src/components/Navigation.tsx index dbe4fdf..efda8a3 100644 --- a/src/components/Navigation.tsx +++ b/src/components/Navigation.tsx @@ -9,16 +9,29 @@ export default function Navigation() { const { session, loading } = useSession() const [userRole, setUserRole] = useState(null) + // Fetch user role whenever session changes useEffect(() => { - // Fetch user role from database if session exists - const userId = (session?.user as { id?: string })?.id - if (userId) { - fetch(`/api/users/${userId}/role`) - .then(res => res.json()) - .then(data => setUserRole(data.role)) - .catch(() => setUserRole(null)); + const fetchUserRole = async () => { + const userId = (session?.user as { id?: string })?.id + if (userId) { + try { + const response = await fetch(`/api/users/${userId}/role`) + if (response.ok) { + const data = await response.json() + setUserRole(data.role) + } else { + setUserRole(null) + } + } catch { + setUserRole(null) + } + } else { + setUserRole(null) + } } - }, [session]); + + fetchUserRole() + }, [session]) const handleLogout = async () => { await authClient.signOut() @@ -56,6 +69,12 @@ export default function Navigation() { > Admin + + Matches +