Files
EpicNext-Cms/src/app/api/admin/permissions/assignments/route.ts
T
openhands df38dccbf1
Local Build and Deploy / deploy (push) Failing after 46s
style: format code biome
2026-07-13 21:57:41 +02:00

39 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 });
},
);