Filter build list by user: non-admins only see their own builds
This commit is contained in:
@@ -6,6 +6,7 @@ export type BuildStream = {
|
||||
expiresAt: number;
|
||||
files: { name: string; size: number; platform?: string }[];
|
||||
updates?: any[];
|
||||
userId?: number;
|
||||
};
|
||||
|
||||
export type BuildConfig = {
|
||||
|
||||
@@ -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<any>(`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<any>(`SELECT * FROM builds ORDER BY start_time DESC`)
|
||||
.all();
|
||||
|
||||
@@ -102,6 +102,7 @@ export async function startBuildProcess(
|
||||
startTime: now,
|
||||
expiresAt: now + SEVEN_DAYS_MS,
|
||||
files: [],
|
||||
userId: config.builtByUserId,
|
||||
};
|
||||
|
||||
buildManager.addBuildStream(buildId, build);
|
||||
|
||||
@@ -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 });
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user