UNPKG

datacops-cms

Version:

A modern, extensible CMS built with Next.js and Prisma.

53 lines (43 loc) 1.7 kB
/* eslint-disable @typescript-eslint/no-explicit-any */ import { NextRequest, NextResponse } from "next/server"; import fs from "fs"; import path from "path"; const PERMISSIONS_DIR = path.resolve(process.cwd(), "content"); const PERMISSIONS_PATH = path.join(PERMISSIONS_DIR, "api-permissions.json"); function readPermissions() { if (!fs.existsSync(PERMISSIONS_PATH)) return {}; return JSON.parse(fs.readFileSync(PERMISSIONS_PATH, "utf-8")); } export async function GET() { return NextResponse.json(readPermissions()); } export async function POST(req: NextRequest) { const { type, permissions } = await req.json(); // Ensure the folder exists if (!fs.existsSync(PERMISSIONS_DIR)) { fs.mkdirSync(PERMISSIONS_DIR, { recursive: true }); } const data = readPermissions(); data[type] = permissions; fs.writeFileSync(PERMISSIONS_PATH, JSON.stringify(data, null, 2)); return NextResponse.json({ success: true }); } // Set default permissions for a new type export function ensurePermissionForType(type: string) { // Ensure directory exists if (!fs.existsSync(PERMISSIONS_DIR)) fs.mkdirSync(PERMISSIONS_DIR, { recursive: true }); let data: { [key: string]: any } = {}; if (fs.existsSync(PERMISSIONS_PATH)) { data = JSON.parse(fs.readFileSync(PERMISSIONS_PATH, "utf-8")); } // If type already exists, do not override if (!(type in data)) { // All permissions false by default data[type] = { GET: false, POST: false, PUT: false, PATCH: false, DELETE: false }; fs.writeFileSync(PERMISSIONS_PATH, JSON.stringify(data, null, 2)); } }