import { cookies } from 'next/headers'; import { redirect } from 'next/navigation'; /** * Server-side fetch wrapper with auth handling */ export const fetchServer = async ( endpoint: string, options: RequestInit = {} ): Promise => { const cookieStore = cookies(); const authToken = await cookieStore.get('Authorization')?.value; if (!authToken) redirect('/login'); try { const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}${endpoint}`, { ...options, headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${authToken}`, ...options.headers, }, cache: 'no-store', }); if (res.status === 401) redirect('/login'); if (!res.ok) throw new Error(`Request failed: ${res.statusText}`); return res.json(); } catch (error) { console.error(`Server request to ${endpoint} failed:`, error); throw error; } };