diff --git a/src/app/(frontend)/intelligence/page.tsx b/src/app/(frontend)/intelligence/page.tsx index 71f2caa..91ec18a 100644 --- a/src/app/(frontend)/intelligence/page.tsx +++ b/src/app/(frontend)/intelligence/page.tsx @@ -1,7 +1,10 @@ import config from "@payload-config"; import { getPayload } from "payload"; +import { headers as nextHeaders } from "next/headers"; +import { redirect } from "next/navigation"; import Link from "next/link"; import type { Campaign, Mission, Faction } from "@/payload-types"; +import { hasIntelligenceQualification } from "@/utils/access-control/hasIntelligenceQualification"; import { CrosshairIcon, ArrowRightIcon } from "lucide-react"; import { Item, @@ -18,6 +21,12 @@ export const metadata = { export default async function IntelligenceOverviewPage() { const payload = await getPayload({ config }); + const headers = await nextHeaders(); + const { user } = await payload.auth({ headers, canSetHeaders: false }); + + if (!user || !(await hasIntelligenceQualification(payload, user))) { + redirect("/"); + } const [campaignsRes, factionsRes] = await Promise.all([ payload diff --git a/src/app/(frontend)/page.tsx b/src/app/(frontend)/page.tsx index 12f3fff..59bc4d0 100644 --- a/src/app/(frontend)/page.tsx +++ b/src/app/(frontend)/page.tsx @@ -3,6 +3,7 @@ import { getPayload } from "payload"; import { headers as nextHeaders } from "next/headers"; import type { User, Rank, Media, Assignment, Campaign, Map, GameStructure } from "@/payload-types"; import { resolveLevel } from "@/utils/xp/resolveLevel"; +import { hasIntelligenceQualification } from "@/utils/access-control/hasIntelligenceQualification"; import { ProfileSummary } from "@/components/frontend/dashboard/ProfileSummary"; import { MissionBriefing } from "@/components/frontend/dashboard/MissionBriefing"; import { RecentEvents } from "@/components/frontend/dashboard/RecentEvents"; @@ -19,6 +20,8 @@ export default async function HomePage() { const userId = user.id; + const hasIntelligence = await hasIntelligenceQualification(payload, user).catch(() => false); + const [profileRes, experienceRes, assignmentRes] = await Promise.all([ payload.find({ collection: "profiles", @@ -229,8 +232,8 @@ export default async function HomePage() { {/* ── Right Sidebar (1/3) ─────────────────────────── */}