@@ -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 ) {