Files
EpicNext-Cms/src/app/api/admin/permissions/assignments/route.ts
T

26 lines
1.1 KiB
TypeScript

import { revalidateTag } from "next/cache";
import { NextResponse } from "next/server";
import { withAdmin } from "@/lib/api-handler";
import { apiError } from "@/lib/api-response";
import { PERMS } from "@/lib/permissions";
import { prisma } from "@/lib/prisma";
export const POST = withAdmin({ permission: PERMS.PERMISSIONS_MANAGE }, async (request) => {
const body = await request.json();
const userId = Number(body.userId);
const roleId = Number(body.roleId);
if (!Number.isInteger(userId) || userId <= 0 || !Number.isInteger(roleId) || roleId <= 0) {
return apiError("Valid userId and roleId required", 400);
}
if (body.action === "remove") {
await prisma.aclModelRole.deleteMany({ where: { modelType: "User", modelId: userId, roleId } });
} else {
const existing = await prisma.aclModelRole.findFirst({
where: { modelType: "User", modelId: userId, roleId },
});
if (!existing) await prisma.aclModelRole.create({ data: { modelType: "User", modelId: userId, roleId } });
}
revalidateTag("permissions", { expire: 0 });
return NextResponse.json({ success: true });
});