@@ -1167,12 +1167,25 @@ func (q *querier) GetWorkspaces(ctx context.Context, arg database.GetWorkspacesP
1167
1167
return q .db .GetAuthorizedWorkspaces (ctx , arg , prep )
1168
1168
}
1169
1169
1170
- func (q * querier ) GetLatestWorkspaceBuildByWorkspaceID (ctx context.Context , workspaceID uuid.UUID ) (database.WorkspaceBuildRBAC , error ) {
1171
- return fetch (q .log , q .auth , q .db .GetLatestWorkspaceBuildByWorkspaceID )(ctx , workspaceID )
1170
+ func (q * querier ) GetLatestWorkspaceBuildByWorkspaceID (ctx context.Context , workspaceID uuid.UUID ) (database.WorkspaceBuild , error ) {
1171
+ if _ , err := q .GetWorkspaceByID (ctx , workspaceID ); err != nil {
1172
+ return database.WorkspaceBuild {}, err
1173
+ }
1174
+ return q .db .GetLatestWorkspaceBuildByWorkspaceID (ctx , workspaceID )
1172
1175
}
1173
1176
1174
- func (q * querier ) GetLatestWorkspaceBuildsByWorkspaceIDs (ctx context.Context , ids []uuid.UUID ) ([]database.WorkspaceBuildRBAC , error ) {
1175
- return fetchWithPostFilter (q .auth , q .db .GetLatestWorkspaceBuildsByWorkspaceIDs )(ctx , ids )
1177
+ func (q * querier ) GetLatestWorkspaceBuildsByWorkspaceIDs (ctx context.Context , ids []uuid.UUID ) ([]database.WorkspaceBuild , error ) {
1178
+ // This is not ideal as not all builds will be returned if the workspace cannot be read.
1179
+ // This should probably be handled differently? Maybe join workspace builds with workspace
1180
+ // ownership properties and filter on that.
1181
+ for _ , id := range ids {
1182
+ _ , err := q .GetWorkspaceByID (ctx , id )
1183
+ if err != nil {
1184
+ return nil , err
1185
+ }
1186
+ }
1187
+
1188
+ return q .db .GetLatestWorkspaceBuildsByWorkspaceIDs (ctx , ids )
1176
1189
}
1177
1190
1178
1191
func (q * querier ) GetWorkspaceAgentByID (ctx context.Context , id uuid.UUID ) (database.WorkspaceAgent , error ) {
@@ -1250,16 +1263,35 @@ func (q *querier) GetWorkspaceAppsByAgentID(ctx context.Context, agentID uuid.UU
1250
1263
return q .db .GetWorkspaceAppsByAgentID (ctx , agentID )
1251
1264
}
1252
1265
1253
- func (q * querier ) GetWorkspaceBuildByID (ctx context.Context , buildID uuid.UUID ) (database.WorkspaceBuildRBAC , error ) {
1254
- return fetch (q .log , q .auth , q .db .GetWorkspaceBuildByID )(ctx , buildID )
1266
+ func (q * querier ) GetWorkspaceBuildByID (ctx context.Context , buildID uuid.UUID ) (database.WorkspaceBuild , error ) {
1267
+ build , err := q .db .GetWorkspaceBuildByID (ctx , buildID )
1268
+ if err != nil {
1269
+ return database.WorkspaceBuild {}, err
1270
+ }
1271
+ if _ , err := q .GetWorkspaceByID (ctx , build .WorkspaceID ); err != nil {
1272
+ return database.WorkspaceBuild {}, err
1273
+ }
1274
+ return build , nil
1255
1275
}
1256
1276
1257
- func (q * querier ) GetWorkspaceBuildByJobID (ctx context.Context , jobID uuid.UUID ) (database.WorkspaceBuildRBAC , error ) {
1258
- return fetch (q .log , q .auth , q .db .GetWorkspaceBuildByJobID )(ctx , jobID )
1277
+ func (q * querier ) GetWorkspaceBuildByJobID (ctx context.Context , jobID uuid.UUID ) (database.WorkspaceBuild , error ) {
1278
+ build , err := q .db .GetWorkspaceBuildByJobID (ctx , jobID )
1279
+ if err != nil {
1280
+ return database.WorkspaceBuild {}, err
1281
+ }
1282
+ // Authorized fetch
1283
+ _ , err = q .GetWorkspaceByID (ctx , build .WorkspaceID )
1284
+ if err != nil {
1285
+ return database.WorkspaceBuild {}, err
1286
+ }
1287
+ return build , nil
1259
1288
}
1260
1289
1261
- func (q * querier ) GetWorkspaceBuildByWorkspaceIDAndBuildNumber (ctx context.Context , arg database.GetWorkspaceBuildByWorkspaceIDAndBuildNumberParams ) (database.WorkspaceBuildRBAC , error ) {
1262
- return fetch (q .log , q .auth , q .db .GetWorkspaceBuildByWorkspaceIDAndBuildNumber )(ctx , arg )
1290
+ func (q * querier ) GetWorkspaceBuildByWorkspaceIDAndBuildNumber (ctx context.Context , arg database.GetWorkspaceBuildByWorkspaceIDAndBuildNumberParams ) (database.WorkspaceBuild , error ) {
1291
+ if _ , err := q .GetWorkspaceByID (ctx , arg .WorkspaceID ); err != nil {
1292
+ return database.WorkspaceBuild {}, err
1293
+ }
1294
+ return q .db .GetWorkspaceBuildByWorkspaceIDAndBuildNumber (ctx , arg )
1263
1295
}
1264
1296
1265
1297
func (q * querier ) GetWorkspaceBuildParameters (ctx context.Context , workspaceBuildID uuid.UUID ) ([]database.WorkspaceBuildParameter , error ) {
@@ -1273,20 +1305,11 @@ func (q *querier) GetWorkspaceBuildParameters(ctx context.Context, workspaceBuil
1273
1305
return q .db .GetWorkspaceBuildParameters (ctx , workspaceBuildID )
1274
1306
}
1275
1307
1276
- func (q * querier ) GetWorkspaceBuildsByWorkspaceID (ctx context.Context , arg database.GetWorkspaceBuildsByWorkspaceIDParams ) ([]database.WorkspaceBuildRBAC , error ) {
1277
- builds , err := q .db .GetWorkspaceBuildsByWorkspaceID (ctx , arg )
1278
- if err != nil {
1279
- return nil , err
1280
- }
1281
- if len (builds ) == 0 {
1282
- return []database.WorkspaceBuildRBAC {}, nil
1283
- }
1284
- // All builds come from the same workspace, so we only need to check the first one.
1285
- err = q .authorizeContext (ctx , rbac .ActionRead , builds [0 ])
1286
- if err != nil {
1308
+ func (q * querier ) GetWorkspaceBuildsByWorkspaceID (ctx context.Context , arg database.GetWorkspaceBuildsByWorkspaceIDParams ) ([]database.WorkspaceBuild , error ) {
1309
+ if _ , err := q .GetWorkspaceByID (ctx , arg .WorkspaceID ); err != nil {
1287
1310
return nil , err
1288
1311
}
1289
- return builds , nil
1312
+ return q . db . GetWorkspaceBuildsByWorkspaceID ( ctx , arg )
1290
1313
}
1291
1314
1292
1315
func (q * querier ) GetWorkspaceByAgentID (ctx context.Context , agentID uuid.UUID ) (database.Workspace , error ) {
@@ -1346,7 +1369,11 @@ func (q *querier) GetWorkspaceResourcesByJobID(ctx context.Context, jobID uuid.U
1346
1369
if err != nil {
1347
1370
return nil , err
1348
1371
}
1349
- obj = build
1372
+ workspace , err := q .db .GetWorkspaceByID (ctx , build .WorkspaceID )
1373
+ if err != nil {
1374
+ return nil , err
1375
+ }
1376
+ obj = workspace
1350
1377
default :
1351
1378
return nil , xerrors .Errorf ("unknown job type: %s" , job .Type )
1352
1379
}
@@ -1387,7 +1414,12 @@ func (q *querier) InsertWorkspaceBuildParameters(ctx context.Context, arg databa
1387
1414
return err
1388
1415
}
1389
1416
1390
- err = q .authorizeContext (ctx , rbac .ActionUpdate , build )
1417
+ workspace , err := q .db .GetWorkspaceByID (ctx , build .WorkspaceID )
1418
+ if err != nil {
1419
+ return err
1420
+ }
1421
+
1422
+ err = q .authorizeContext (ctx , rbac .ActionUpdate , workspace )
1391
1423
if err != nil {
1392
1424
return err
1393
1425
}
@@ -1451,7 +1483,11 @@ func (q *querier) UpdateWorkspaceBuildByID(ctx context.Context, arg database.Upd
1451
1483
return database.WorkspaceBuild {}, err
1452
1484
}
1453
1485
1454
- err = q .authorizeContext (ctx , rbac .ActionUpdate , build )
1486
+ workspace , err := q .db .GetWorkspaceByID (ctx , build .WorkspaceID )
1487
+ if err != nil {
1488
+ return database.WorkspaceBuild {}, err
1489
+ }
1490
+ err = q .authorizeContext (ctx , rbac .ActionUpdate , workspace .RBACObject ())
1455
1491
if err != nil {
1456
1492
return database.WorkspaceBuild {}, err
1457
1493
}
0 commit comments