import config from "@payload-config"; import { getPayload } from "payload"; import { headers as nextHeaders } from "next/headers"; import type { Asset, Loadout, LockerStorage } from "@/payload-types"; import { LockKeyholeIcon } from "lucide-react"; import { ensureLockerStorage, getLockerGridDimensions } from "@/lib/locker"; import { LockerView } from "@/components/frontend/locker/LockerView"; import hasRoles from "@/utils/access-control/hasRoles"; export const metadata = { title: "Locker — Polaris Task Force", }; export default async function LockerPage() { const payload = await getPayload({ config }); const { user } = await payload.auth({ headers: await nextHeaders(), canSetHeaders: false, }); const userId = user?.id as number; const locker = await ensureLockerStorage(payload, userId); const lockerFull = (await payload.findByID({ collection: "locker-storages", id: locker.id, depth: 2, overrideAccess: true, })) as unknown as LockerStorage; const loadoutsRes = await payload.find({ collection: "loadouts", where: { ownerUser: { equals: userId } }, sort: "name", limit: 100, depth: 1, }); const loadouts = loadoutsRes.docs as unknown as Loadout[]; const isManager = user ? hasRoles(["admin", "developer"], user) : false; let assetsCatalog: Asset[] = []; if (isManager) { const assetsRes = await payload.find({ collection: "assets", sort: "name", limit: 500, depth: 0, }); assetsCatalog = assetsRes.docs as unknown as Asset[]; } const grid = await getLockerGridDimensions(payload); return (

Personal Locker

Store, organize, and equip your personal gear and loadouts.

); }