import { createPermission, deletePermission, updatePermission, } from "@/actions/admin-permissions"; import { StatusCard } from "@/components/admin/dashboard"; import { prisma } from "@/lib/prisma"; import { Shield } from "lucide-react"; export const dynamic = "force-dynamic"; // Manages website_permissions (model WebsitePermissions) — the CMS-owned // permission -> minimum-rank mapping. Each row names a permission and the lowest // rank allowed to use it, with an optional description. type PermissionRow = { id: bigint; permission: string; minRank: number; description: string | null; }; export default async function AdminPermissions() { let permissions: PermissionRow[] = []; try { permissions = await prisma.websitePermissions.findMany({ select: { id: true, permission: true, minRank: true, description: true }, orderBy: { minRank: "asc" }, take: 500, }); } catch { permissions = []; } const highestRank = permissions.reduce((max, p) => Math.max(max, p.minRank), 0); return (

Permissions

CMS-owned permissions (website_permissions). Each entry maps a permission name to the minimum rank allowed to use it.

Add / overwrite permission

Permissions ({permissions.length})

{permissions.length === 0 ? (
No permissions found.
) : (
{permissions.map((p) => ( ))}
ID Permission Min rank Description
{String(p.id)}
)}
); }