import { notFound, redirect } from "next/navigation";
import { isCsmsApiConfigured } from "@/lib/auth/server-config";
import { getServerSession } from "@/lib/auth/server-session";
import {
  canAccessFeature,
  type DashboardFeature,
} from "@/lib/auth/feature-permissions";

export async function requireFeatureAccess(
  feature: DashboardFeature,
  deniedRedirect?: string,
) {
  if (!isCsmsApiConfigured()) return null;

  const session = await getServerSession();
  if (!session) redirect("/signin");
  if (!canAccessFeature(session.role, feature)) {
    if (deniedRedirect) redirect(deniedRedirect);
    notFound();
  }
  return session;
}

export async function FeatureAccessLayout({
  feature,
  children,
}: {
  feature: DashboardFeature;
  children: React.ReactNode;
}) {
  await requireFeatureAccess(feature);
  return children;
}
