@@ -2439,38 +2439,51 @@ func (q *querier) GetProvisionerDaemonsWithStatusByOrganization(ctx context.Cont
2439
2439
return fetchWithPostFilter (q .auth , policy .ActionRead , q .db .GetProvisionerDaemonsWithStatusByOrganization )(ctx , arg )
2440
2440
}
2441
2441
2442
- func (q * querier ) GetProvisionerJobByID (ctx context.Context , id uuid.UUID ) (database.ProvisionerJob , error ) {
2443
- job , err := q .db .GetProvisionerJobByID (ctx , id )
2444
- if err != nil {
2445
- return database.ProvisionerJob {}, err
2446
- }
2447
-
2442
+ func (q * querier ) authorizeProvisionerJob (ctx context.Context , job database.ProvisionerJob ) error {
2448
2443
switch job .Type {
2449
2444
case database .ProvisionerJobTypeWorkspaceBuild :
2450
2445
// Authorized call to get workspace build. If we can read the build, we
2451
2446
// can read the job.
2452
- _ , err := q .GetWorkspaceBuildByJobID (ctx , id )
2447
+ _ , err := q .GetWorkspaceBuildByJobID (ctx , job . ID )
2453
2448
if err != nil {
2454
- return database. ProvisionerJob {}, xerrors .Errorf ("fetch related workspace build: %w" , err )
2449
+ return xerrors .Errorf ("fetch related workspace build: %w" , err )
2455
2450
}
2456
2451
case database .ProvisionerJobTypeTemplateVersionDryRun , database .ProvisionerJobTypeTemplateVersionImport :
2457
2452
// Authorized call to get template version.
2458
2453
_ , err := authorizedTemplateVersionFromJob (ctx , q , job )
2459
2454
if err != nil {
2460
- return database. ProvisionerJob {}, xerrors .Errorf ("fetch related template version: %w" , err )
2455
+ return xerrors .Errorf ("fetch related template version: %w" , err )
2461
2456
}
2462
2457
default :
2463
- return database.ProvisionerJob {}, xerrors .Errorf ("unknown job type: %q" , job .Type )
2458
+ return xerrors .Errorf ("unknown job type: %q" , job .Type )
2459
+ }
2460
+ return nil
2461
+ }
2462
+
2463
+ func (q * querier ) GetProvisionerJobByID (ctx context.Context , id uuid.UUID ) (database.ProvisionerJob , error ) {
2464
+ job , err := q .db .GetProvisionerJobByID (ctx , id )
2465
+ if err != nil {
2466
+ return database.ProvisionerJob {}, err
2467
+ }
2468
+
2469
+ if err := q .authorizeProvisionerJob (ctx , job ); err != nil {
2470
+ return database.ProvisionerJob {}, err
2464
2471
}
2465
2472
2466
2473
return job , nil
2467
2474
}
2468
2475
2469
2476
func (q * querier ) GetProvisionerJobByIDForUpdate (ctx context.Context , id uuid.UUID ) (database.ProvisionerJob , error ) {
2470
- if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceProvisionerJobs ); err != nil {
2477
+ job , err := q .db .GetProvisionerJobByIDForUpdate (ctx , id )
2478
+ if err != nil {
2479
+ return database.ProvisionerJob {}, err
2480
+ }
2481
+
2482
+ if err := q .authorizeProvisionerJob (ctx , job ); err != nil {
2471
2483
return database.ProvisionerJob {}, err
2472
2484
}
2473
- return q .db .GetProvisionerJobByIDForUpdate (ctx , id )
2485
+
2486
+ return job , nil
2474
2487
}
2475
2488
2476
2489
func (q * querier ) GetProvisionerJobTimingsByJobID (ctx context.Context , jobID uuid.UUID ) ([]database.ProvisionerJobTiming , error ) {
0 commit comments