/home/techb158/balavpn.abdallabala.com/src/app/api/admin/super-admins
Edit: /home/techb158/balavpn.abdallabala.com/src/app/api/admin/super-admins/route.js (1635B)
const { prisma } = require("../../../../lib/prisma");
const { jsonResponse, errorResponse } = require("../../../../lib/http");
const { requireSuperOwner, requireSuperUser } = require("../../../../lib/request-context");
export async function POST(request) {
try {
await requireSuperOwner(request);
const { email, displayName } = await request.json();
if (!email || !displayName) return jsonResponse({ error: "email and displayName are required" }, 400);
const user = await prisma.user.findUnique({ where: { email } });
if (!user) return jsonResponse({ error: "User not found" }, 404);
if (user.platformRole === "SUPER_OWNER") return jsonResponse({ error: "Cannot change Super Owner role" }, 403);
const updated = await prisma.user.update({
where: { id: user.id },
data: { platformRole: "SUPER_ADMIN", displayName }
});
return jsonResponse({ user: { id: updated.id, email: updated.email, displayName: updated.displayName, platformRole: updated.platformRole } });
} catch (error) {
return errorResponse(error);
}
}
export async function GET(request) {
try {
await requireSuperUser(request);
const admins = await prisma.user.findMany({
where: { platformRole: { in: ["SUPER_ADMIN", "SUPER_OWNER"] } },
select: {
id: true, email: true, displayName: true, platformRole: true, lastLoginAt: true, createdAt: true,
organizationAccess: {
select: { organizationId: true, organization: { select: { name: true } } }
}
}
});
return jsonResponse({ admins });
} catch (error) {
return errorResponse(error);
}
}