/home/techb158/balavpn.abdallabala.com/src/app/api/admin/users
NameSizeModeActions
route.js23770644editdlrm
Edit: /home/techb158/balavpn.abdallabala.com/src/app/api/admin/users/route.js (2377B)
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); const { searchParams } = new URL(request.url); const query = searchParams.get("q") || ""; const page = parseInt(searchParams.get("page") || "1", 10); const limit = Math.min(parseInt(searchParams.get("limit") || "50", 10), 100); const skip = (page - 1) * limit; // Super Admin: only see members of their assigned organizations if (actor.platformRole === "SUPER_ADMIN") { const assignedOrgIds = (await prisma.organizationAccess.findMany({ where: { userId: actor.id }, select: { organizationId: true } })).map(a => a.organizationId); const membershipWhere = { organizationId: { in: assignedOrgIds } }; const [users, total] = await Promise.all([ prisma.user.findMany({ where: { ...(query ? { OR: [{ email: { contains: query, mode: "insensitive" } }, { displayName: { contains: query, mode: "insensitive" } }] } : {}), memberships: { some: membershipWhere } }, select: { id: true, email: true, displayName: true, platformRole: true, emailVerifiedAt: true, lastLoginAt: true, createdAt: true } }), prisma.user.count({ where: { ...(query ? { OR: [{ email: { contains: query, mode: "insensitive" } }, { displayName: { contains: query, mode: "insensitive" } }] } : {}), memberships: { some: membershipWhere } } }) ]); return jsonResponse({ users, total, page, limit }); } // Super Owner: see all users const where = query ? { OR: [{ email: { contains: query, mode: "insensitive" } }, { displayName: { contains: query, mode: "insensitive" } }] } : {}; const [users, total] = await Promise.all([ prisma.user.findMany({ where, select: { id: true, email: true, displayName: true, platformRole: true, emailVerifiedAt: true, lastLoginAt: true, createdAt: true } }), prisma.user.count({ where }) ]); return jsonResponse({ users, total, page, limit }); } catch (error) { return errorResponse(error); } }