@@ -251,12 +251,6 @@ func (q *querier) GetProvisionerJobByID(ctx context.Context, id uuid.UUID) (data
251
251
return job , nil
252
252
}
253
253
254
- func (q * querier ) GetProvisionerJobsByIDs (ctx context.Context , ids []uuid.UUID ) ([]database.ProvisionerJob , error ) {
255
- // TODO: This is missing authorization and is incorrect. This call is used by telemetry, and by 1 http route.
256
- // That http handler should find a better way to fetch these jobs with easier rbac authz.
257
- return q .db .GetProvisionerJobsByIDs (ctx , ids )
258
- }
259
-
260
254
func (q * querier ) GetProvisionerLogsByIDBetween (ctx context.Context , arg database.GetProvisionerLogsByIDBetweenParams ) ([]database.ProvisionerJobLog , error ) {
261
255
// Authorized read on job lets the actor also read the logs.
262
256
_ , err := q .GetProvisionerJobByID (ctx , arg .JobID )
@@ -725,35 +719,6 @@ func (q *querier) GetTemplateVersionVariables(ctx context.Context, templateVersi
725
719
return q .db .GetTemplateVersionVariables (ctx , templateVersionID )
726
720
}
727
721
728
- func (q * querier ) GetTemplateVersionsByIDs (ctx context.Context , ids []uuid.UUID ) ([]database.TemplateVersion , error ) {
729
- // TODO: This is so inefficient
730
- versions , err := q .db .GetTemplateVersionsByIDs (ctx , ids )
731
- if err != nil {
732
- return nil , err
733
- }
734
- checked := make (map [uuid.UUID ]bool )
735
- for _ , v := range versions {
736
- if _ , ok := checked [v .TemplateID .UUID ]; ok {
737
- continue
738
- }
739
-
740
- obj := v .RBACObjectNoTemplate ()
741
- template , err := q .db .GetTemplateByID (ctx , v .TemplateID .UUID )
742
- if err == nil {
743
- obj = v .RBACObject (template )
744
- }
745
- if err != nil && ! xerrors .Is (err , sql .ErrNoRows ) {
746
- return nil , err
747
- }
748
- if err := q .authorizeContext (ctx , rbac .ActionRead , obj ); err != nil {
749
- return nil , err
750
- }
751
- checked [v .TemplateID .UUID ] = true
752
- }
753
-
754
- return versions , nil
755
- }
756
-
757
722
func (q * querier ) GetTemplateVersionsByTemplateID (ctx context.Context , arg database.GetTemplateVersionsByTemplateIDParams ) ([]database.TemplateVersion , error ) {
758
723
// An actor can read template versions if they can read the related template.
759
724
template , err := q .db .GetTemplateByID (ctx , arg .TemplateID )
@@ -1013,11 +978,6 @@ func (q *querier) GetUsersWithCount(ctx context.Context, arg database.GetUsersPa
1013
978
return users , rowUsers [0 ].Count , nil
1014
979
}
1015
980
1016
- // TODO: Remove this and use a filter on GetUsers
1017
- func (q * querier ) GetUsersByIDs (ctx context.Context , ids []uuid.UUID ) ([]database.User , error ) {
1018
- return fetchWithPostFilter (q .auth , q .db .GetUsersByIDs )(ctx , ids )
1019
- }
1020
-
1021
981
func (q * querier ) InsertUser (ctx context.Context , arg database.InsertUserParams ) (database.User , error ) {
1022
982
// Always check if the assigned roles can actually be assigned by this actor.
1023
983
impliedRoles := append ([]string {rbac .RoleMember ()}, arg .RBACRoles ... )
@@ -1222,37 +1182,6 @@ func (q *querier) GetWorkspaceAgentByInstanceID(ctx context.Context, authInstanc
1222
1182
return agent , nil
1223
1183
}
1224
1184
1225
- // GetWorkspaceAgentsByResourceIDs is an all or nothing call. If the user cannot read
1226
- // a single agent, the entire call will fail.
1227
- func (q * querier ) GetWorkspaceAgentsByResourceIDs (ctx context.Context , ids []uuid.UUID ) ([]database.WorkspaceAgent , error ) {
1228
- if _ , ok := ActorFromContext (ctx ); ! ok {
1229
- return nil , NoActorError
1230
- }
1231
- // TODO: Make this more efficient. This is annoying because all these resources should be owned by the same workspace.
1232
- // So the authz check should just be 1 check, but we cannot do that easily here. We should see if all callers can
1233
- // instead do something like GetWorkspaceAgentsByWorkspaceID.
1234
- agents , err := q .db .GetWorkspaceAgentsByResourceIDs (ctx , ids )
1235
- if err != nil {
1236
- return nil , err
1237
- }
1238
-
1239
- for _ , a := range agents {
1240
- // Check if we can fetch the workspace by the agent ID.
1241
- _ , err := q .GetWorkspaceByAgentID (ctx , a .ID )
1242
- if err == nil {
1243
- continue
1244
- }
1245
- if errors .Is (err , sql .ErrNoRows ) && ! errors .As (err , & NotAuthorizedError {}) {
1246
- // The agent is not tied to a workspace, likely from an orphaned template version.
1247
- // Just return it.
1248
- continue
1249
- }
1250
- // Otherwise, we cannot read the workspace, so we cannot read the agent.
1251
- return nil , err
1252
- }
1253
- return agents , nil
1254
- }
1255
-
1256
1185
func (q * querier ) UpdateWorkspaceAgentLifecycleStateByID (ctx context.Context , arg database.UpdateWorkspaceAgentLifecycleStateByIDParams ) error {
1257
1186
agent , err := q .db .GetWorkspaceAgentByID (ctx , arg .ID )
1258
1187
if err != nil {
@@ -1305,20 +1234,6 @@ func (q *querier) GetWorkspaceAppsByAgentID(ctx context.Context, agentID uuid.UU
1305
1234
return q .db .GetWorkspaceAppsByAgentID (ctx , agentID )
1306
1235
}
1307
1236
1308
- // GetWorkspaceAppsByAgentIDs is an all or nothing call. If the user cannot read a single app, the entire call will fail.
1309
- func (q * querier ) GetWorkspaceAppsByAgentIDs (ctx context.Context , ids []uuid.UUID ) ([]database.WorkspaceApp , error ) {
1310
- // TODO: This should be reworked. All these apps are likely owned by the same workspace, so we should be able to
1311
- // do 1 authz call. We should refactor this to be GetWorkspaceAppsByWorkspaceID.
1312
- for _ , id := range ids {
1313
- _ , err := q .GetWorkspaceAgentByID (ctx , id )
1314
- if err != nil {
1315
- return nil , err
1316
- }
1317
- }
1318
-
1319
- return q .db .GetWorkspaceAppsByAgentIDs (ctx , ids )
1320
- }
1321
-
1322
1237
func (q * querier ) GetWorkspaceBuildByID (ctx context.Context , buildID uuid.UUID ) (database.WorkspaceBuild , error ) {
1323
1238
build , err := q .db .GetWorkspaceBuildByID (ctx , buildID )
1324
1239
if err != nil {
@@ -1395,21 +1310,6 @@ func (q *querier) GetWorkspaceResourceByID(ctx context.Context, id uuid.UUID) (d
1395
1310
return resource , nil
1396
1311
}
1397
1312
1398
- // GetWorkspaceResourceMetadataByResourceIDs is an all or nothing call. If a single resource is not authorized, then
1399
- // an error is returned.
1400
- func (q * querier ) GetWorkspaceResourceMetadataByResourceIDs (ctx context.Context , ids []uuid.UUID ) ([]database.WorkspaceResourceMetadatum , error ) {
1401
- // TODO: This is very inefficient. Since all these resources are likely asscoiated with the same workspace.
1402
- for _ , id := range ids {
1403
- // If we can read the resource, we can read the metadata.
1404
- _ , err := q .GetWorkspaceResourceByID (ctx , id )
1405
- if err != nil {
1406
- return nil , err
1407
- }
1408
- }
1409
-
1410
- return q .db .GetWorkspaceResourceMetadataByResourceIDs (ctx , ids )
1411
- }
1412
-
1413
1313
func (q * querier ) GetWorkspaceResourcesByJobID (ctx context.Context , jobID uuid.UUID ) ([]database.WorkspaceResource , error ) {
1414
1314
job , err := q .db .GetProvisionerJobByID (ctx , jobID )
1415
1315
if err != nil {
@@ -1455,21 +1355,6 @@ func (q *querier) GetWorkspaceResourcesByJobID(ctx context.Context, jobID uuid.U
1455
1355
return q .db .GetWorkspaceResourcesByJobID (ctx , jobID )
1456
1356
}
1457
1357
1458
- // GetWorkspaceResourcesByJobIDs is an all or nothing call. If a single resource is not authorized, then
1459
- // an error is returned.
1460
- func (q * querier ) GetWorkspaceResourcesByJobIDs (ctx context.Context , ids []uuid.UUID ) ([]database.WorkspaceResource , error ) {
1461
- // TODO: This is very inefficient. Since all these resources are likely asscoiated with the same workspace.
1462
- for _ , id := range ids {
1463
- // If we can read the resource, we can read the metadata.
1464
- _ , err := q .GetProvisionerJobByID (ctx , id )
1465
- if err != nil {
1466
- return nil , err
1467
- }
1468
- }
1469
-
1470
- return q .db .GetWorkspaceResourcesByJobIDs (ctx , ids )
1471
- }
1472
-
1473
1358
func (q * querier ) InsertWorkspace (ctx context.Context , arg database.InsertWorkspaceParams ) (database.Workspace , error ) {
1474
1359
obj := rbac .ResourceWorkspace .WithOwner (arg .OwnerID .String ()).InOrg (arg .OrganizationID )
1475
1360
return insert (q .log , q .auth , obj , q .db .InsertWorkspace )(ctx , arg )
0 commit comments