import { NextResponse, type NextRequest } from 'next/server';
import { jwtVerify } from 'jose';
export async function middleware(req: NextRequest) {
  // Eski adresler (sslip, parsel.kreatif.tr, LEGACY_HOSTS) ve www: sayfa istekleri asıl alan adına kalıcı yönlendirilir.
  // API/webhook istekleri bu eşleşmenin dışında olduğu için eski adreste de çalışmaya devam eder (ör. ödeme bildirimleri).
  const app = process.env.APP_URL ? new URL(process.env.APP_URL) : null;
  const host = (req.headers.get('x-forwarded-host') || req.headers.get('host') || '').split(':')[0].toLowerCase();
  const legacy = (process.env.LEGACY_HOSTS || 'parsel.kreatif.tr').split(',').map((x) => x.trim().toLowerCase()).filter(Boolean);
  const old = !!app && host !== app.hostname && (host.endsWith('.sslip.io') || legacy.includes(host) || host === `www.${app.hostname}`);
  if (app && old && (req.method === 'GET' || req.method === 'HEAD'))
    return NextResponse.redirect(new URL(req.nextUrl.pathname + req.nextUrl.search, app.origin), 308);
  let res = NextResponse.next();
  if (/^\/panel(\/|$)/.test(req.nextUrl.pathname)) { // yönetim yolu burada yok: yetkisiz isteğe sayfanın kendisi 404 döner
    const t = req.cookies.get('ps_session')?.value;
    let ok = false;
    if (t) { try { await jwtVerify(t, new TextEncoder().encode(process.env.AUTH_SECRET || 'dev-only-change-me-dev-only-change-me')); ok = true; } catch { /* */ } }
    if (!ok) res = NextResponse.redirect(new URL(`/giris?sonra=${encodeURIComponent(req.nextUrl.pathname + req.nextUrl.search)}`, req.url));
  }
  // Referans bağlantısı (?ref=KOD): 30 gün saklanır, kayıtta davet eden kişiye bağlanır.
  const ref = req.nextUrl.searchParams.get('ref');
  if (ref && /^[A-Z0-9]{4,12}$/.test(ref)) res.cookies.set('ps_ref', ref, { maxAge: 30 * 86400, httpOnly: true, sameSite: 'lax', secure: req.nextUrl.protocol === 'https:', path: '/' });
  return res;
}
export const config = { matcher: ['/((?!_next/|api/|favicon|icon|ornekler/|sesler/).*)'] };
