From c8c45fe56551516071ec4e41ac6e5c2a4db5cce6 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 16 Mar 2026 13:42:13 +0100 Subject: [PATCH] Filter build list by user: non-admins only see their own builds --- Overlord-Server/src/build/types.ts | 1 + Overlord-Server/src/db.ts | 16 +++++++++++++++- Overlord-Server/src/server/build-process.ts | 1 + .../src/server/routes/build-routes.ts | 2 +- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Overlord-Server/src/build/types.ts b/Overlord-Server/src/build/types.ts index d12eaa7..93439b7 100644 --- a/Overlord-Server/src/build/types.ts +++ b/Overlord-Server/src/build/types.ts @@ -6,6 +6,7 @@ export type BuildStream = { expiresAt: number; files: { name: string; size: number; platform?: string }[]; updates?: any[]; + userId?: number; }; export type BuildConfig = { diff --git a/Overlord-Server/src/db.ts b/Overlord-Server/src/db.ts index e7e072a..9364f3b 100644 --- a/Overlord-Server/src/db.ts +++ b/Overlord-Server/src/db.ts @@ -651,7 +651,21 @@ export function getBuildByTag(buildTag: string): BuildRecord | null { }; } -export function getAllBuilds(): BuildRecord[] { +export function getAllBuilds(userId?: number, role?: string): BuildRecord[] { + if (role !== "admin" && userId != null) { + const rows = db + .query(`SELECT * FROM builds WHERE built_by_user_id = ? ORDER BY start_time DESC`) + .all(userId); + return rows.map((row) => ({ + id: row.id, + status: row.status, + startTime: row.start_time, + expiresAt: row.expires_at, + files: JSON.parse(row.files), + buildTag: row.build_tag || undefined, + builtByUserId: row.built_by_user_id || undefined, + })); + } const rows = db .query(`SELECT * FROM builds ORDER BY start_time DESC`) .all(); diff --git a/Overlord-Server/src/server/build-process.ts b/Overlord-Server/src/server/build-process.ts index dcfcc91..fcc3feb 100644 --- a/Overlord-Server/src/server/build-process.ts +++ b/Overlord-Server/src/server/build-process.ts @@ -102,6 +102,7 @@ export async function startBuildProcess( startTime: now, expiresAt: now + SEVEN_DAYS_MS, files: [], + userId: config.builtByUserId, }; buildManager.addBuildStream(buildId, build); diff --git a/Overlord-Server/src/server/routes/build-routes.ts b/Overlord-Server/src/server/routes/build-routes.ts index e68fedf..87a388f 100644 --- a/Overlord-Server/src/server/routes/build-routes.ts +++ b/Overlord-Server/src/server/routes/build-routes.ts @@ -141,7 +141,7 @@ export async function handleBuildRoutes( if (req.method === "GET" && url.pathname === "/api/build/list") { requirePermission(user, "clients:build"); - const builds = getAllBuilds(); + const builds = getAllBuilds(user.userId, user.role); return Response.json({ builds }); }