diff --git a/frontend/app/protected/page.tsx b/frontend/app/protected/page.tsx index 147361d..aaca9c4 100644 --- a/frontend/app/protected/page.tsx +++ b/frontend/app/protected/page.tsx @@ -1,13 +1,54 @@ import { createClient } from "@/utils/supabase/server"; -import { InfoIcon } from "lucide-react"; +import { InfoIcon, LogOutIcon, Loader2 } from "lucide-react"; import { redirect } from "next/navigation"; +import { useState, useEffect } from "react"; export default async function ProtectedPage() { const supabase = createClient(); + const [user, setUser] = useState(null); + const [loading, setLoading] = useState(true); - const { - data: { user }, - } = await supabase.auth.getUser(); + useEffect(() => { + async function fetchUser() { + const { + data: { user }, + error + } = await supabase.auth.getUser(); + + if (error) { + console.error("Error fetching user:", error); + setLoading(false); + return; + } + + if (!user) { + redirect("/login"); + } else { + setUser(user); + setLoading(false); + } + } + + fetchUser(); + }, [supabase]); + + const handleLogout = async () => { + const { error } = await supabase.auth.signOut(); + if (error) { + console.error("Error logging out:", error); + } else { + redirect("/login"); + } + }; + + if (loading) { + return ( +
Loading user details...
+