- update-Nitrov3.sh: build CMS into .next-staging and swap atomically so a failed build never takes the live site down; auto-merge new variables from .env.example; validate env for duplicates/broken lines; restart the emulator/CMS only when rebuilt or unhealthy; fix step renumbering - next.config.ts: support NEXT_DIST_DIR for staged production builds - fix all TS errors (unused imports, missing tryDownloadCandidates helper) so tsc and the production build pass clean - add Dockerfile/.dockerignore and switch docker-compose to a CMS container - include prevailing UI/refactor changes (SurfaceCard, ticketing, tsconfig)
27 lines
845 B
TypeScript
27 lines
845 B
TypeScript
"use server";
|
|
|
|
import { asc } from "drizzle-orm";
|
|
import { requirePermission } from "@/lib/admin/guard";
|
|
import { db, WebsiteHousekeepingPermissions } from "@/lib/db";
|
|
import { PERMS } from "@/lib/permissions";
|
|
|
|
export async function exportPermissions(): Promise<string> {
|
|
await requirePermission(PERMS.SETTINGS_VIEW);
|
|
|
|
const perms = await db
|
|
.select({
|
|
permission: WebsiteHousekeepingPermissions.permission,
|
|
minRank: WebsiteHousekeepingPermissions.minRank,
|
|
description: WebsiteHousekeepingPermissions.description,
|
|
groupName: WebsiteHousekeepingPermissions.groupName,
|
|
dependsOn: WebsiteHousekeepingPermissions.dependsOn,
|
|
})
|
|
.from(WebsiteHousekeepingPermissions)
|
|
.orderBy(
|
|
asc(WebsiteHousekeepingPermissions.groupName),
|
|
asc(WebsiteHousekeepingPermissions.permission),
|
|
);
|
|
|
|
return JSON.stringify(perms, null, 2);
|
|
}
|