import { connection } from 'next/server'; import { setRequestLocale } from 'next-intl/server'; import type { Metadata } from 'next'; import { redirect } from 'next/navigation'; import DashboardContent from '@/components/auth/DashboardContent'; import { createClient } from '@/lib/supabase/server'; // Force dynamic rendering to ensure auth checks run on every request export const dynamic = 'force-dynamic'; type Props = { params: Promise<{ locale: string }>; }; export async function generateMetadata({ params }: Props): Promise { const { locale } = await params; const titles: Record = { de: 'Dashboard | Damjan Savić', en: 'Dashboard | Damjan Savić', sr: 'Dashboard | Damjan Savić', }; return { title: titles[locale] || titles.de, robots: { index: false, follow: false, googleBot: { index: false, follow: false, }, }, }; } export default async function DashboardPage({ params }: Props) { // CRITICAL: Use connection() API to guarantee dynamic rendering in Next.js 15 await connection(); const { locale } = await params; setRequestLocale(locale); // Server-side auth check (defense-in-depth) const supabase = await createClient(); const { data: { user } } = await supabase.auth.getUser(); if (!user) { redirect(`/${locale}/login`); } return ; }