import 'server-only';
import { cookies } from 'next/headers';
import { redirect } from 'next/navigation';
import { BACKEND_TOKEN_COOKIE_NAME, SESSION_COOKIE_NAME, getAuthenticatedHome, parseSessionToken } from './session';
import { sanitizeUserForClient } from './auth';

export async function requireSession(home: '/dashboard' | '/agent') {
  const jar = cookies();
  const user = await parseSessionToken(
    jar.get(SESSION_COOKIE_NAME)?.value, jar.get(BACKEND_TOKEN_COOKIE_NAME)?.value
  );
  if (!user) redirect('/?screen=get_started');
  if (getAuthenticatedHome(user) !== home) redirect(getAuthenticatedHome(user));
  return sanitizeUserForClient(user);
}
