/home/techb158/balavpn.abdallabala.com/src/app/api/admin/organizations
Edit: /home/techb158/balavpn.abdallabala.com/src/app/api/admin/organizations/route.js (1566B)
const { prisma } = require("../../../../lib/prisma");
const { jsonResponse, errorResponse } = require("../../../../lib/http");
const { requireSuperUser } = require("../../../../lib/request-context");
export async function GET(request) {
try {
const actor = await requireSuperUser(request);
// Super Admin: only see assigned organizations
if (actor.platformRole === "SUPER_ADMIN") {
const accessEntries = await prisma.organizationAccess.findMany({
where: { userId: actor.id },
include: {
organization: {
include: { _count: { select: { memberships: true, workspaces: true } } }
}
}
});
const organizations = accessEntries.map(e => e.organization);
return jsonResponse({ organizations, total: organizations.length, page: 1, limit: organizations.length });
}
// Super Owner: see all organizations
const page = parseInt(new URL(request.url).searchParams.get("page") || "1", 10);
const limit = Math.min(parseInt(new URL(request.url).searchParams.get("limit") || "50", 10), 100);
const skip = (page - 1) * limit;
const [organizations, total] = await Promise.all([
prisma.organization.findMany({
skip,
take: limit,
orderBy: { createdAt: "desc" },
include: {
_count: { select: { memberships: true, workspaces: true } }
}
}),
prisma.organization.count()
]);
return jsonResponse({ organizations, total, page, limit });
} catch (error) {
return errorResponse(error);
}
}