import { NextRequest, NextResponse } from 'next/server';

import { getPortalSession, type PortalSession } from './auth';

type PortalRouteHandler = (
  req: NextRequest,
  session: PortalSession,
  params: Record<string, string>,
) => Promise<NextResponse>;

export function withPortalAuth(handler: PortalRouteHandler) {
  return async (req: NextRequest, routeContext: { params: Promise<Record<string, string>> }) => {
    const session = await getPortalSession();
    if (!session) {
      return NextResponse.json({ error: 'Portal authentication required' }, { status: 401 });
    }
    const params = await routeContext.params;
    return handler(req, session, params);
  };
}
