// frontend/app/(protected)/layout.jsx // frontend/app/(protected)/layout.jsx import { cookies, headers } from "next/headers"; // 1. ยังคงใช้ฟังก์ชันฝั่ง Server import { redirect } from "next/navigation"; import { Bell, Users } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; // 2. Import Navigation Component ที่เราสร้างขึ้นมาใหม่ import { Navigation } from "./_components/navigation"; export const metadata = { title: "DMS | Protected" }; const API_BASE = process.env.NEXT_PUBLIC_API_URL || "http://localhost:3001"; async function fetchSession() { const cookieStore = cookies(); const token = cookieStore.get("access_token")?.value; if (!token) return null; try { const res = await fetch(`${API_BASE}/api/auth/me`, { headers: { Authorization: `Bearer ${token}` }, cache: "no-store", }); if (!res.ok) return null; return await res.json(); } catch (error) { console.error("Failed to fetch session:", error); return null; } } export default async function ProtectedLayout({ children }) { // 3. ดึงข้อมูล Session บน Server const session = await fetchSession(); // ถ้าไม่มี session หรือ user ให้ redirect ไปหน้า login if (!session?.user) { redirect("/login"); } return (