Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc5cb203

Browse files
committed
Apply a new authorization check for GetProvisionerJobByIDForUpdate
1 parentc800494 commitc5cb203

File tree

2 files changed

+32
-18
lines changed

2 files changed

+32
-18
lines changed

‎coderd/database/dbauthz/dbauthz.go‎

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1182,6 +1182,27 @@ func (q *querier) customRoleCheck(ctx context.Context, role database.CustomRole)
11821182
returnnil
11831183
}
11841184

1185+
func (q*querier)authorizeProvisionerJob(ctx context.Context,job database.ProvisionerJob)error {
1186+
switchjob.Type {
1187+
casedatabase.ProvisionerJobTypeWorkspaceBuild:
1188+
// Authorized call to get workspace build. If we can read the build, we
1189+
// can read the job.
1190+
_,err:=q.GetWorkspaceBuildByJobID(ctx,job.ID)
1191+
iferr!=nil {
1192+
returnxerrors.Errorf("fetch related workspace build: %w",err)
1193+
}
1194+
casedatabase.ProvisionerJobTypeTemplateVersionDryRun,database.ProvisionerJobTypeTemplateVersionImport:
1195+
// Authorized call to get template version.
1196+
_,err:=authorizedTemplateVersionFromJob(ctx,q,job)
1197+
iferr!=nil {
1198+
returnxerrors.Errorf("fetch related template version: %w",err)
1199+
}
1200+
default:
1201+
returnxerrors.Errorf("unknown job type: %q",job.Type)
1202+
}
1203+
returnnil
1204+
}
1205+
11851206
func (q*querier)AcquireLock(ctx context.Context,idint64)error {
11861207
returnq.db.AcquireLock(ctx,id)
11871208
}
@@ -2445,32 +2466,24 @@ func (q *querier) GetProvisionerJobByID(ctx context.Context, id uuid.UUID) (data
24452466
return database.ProvisionerJob{},err
24462467
}
24472468

2448-
switchjob.Type {
2449-
casedatabase.ProvisionerJobTypeWorkspaceBuild:
2450-
// Authorized call to get workspace build. If we can read the build, we
2451-
// can read the job.
2452-
_,err:=q.GetWorkspaceBuildByJobID(ctx,id)
2453-
iferr!=nil {
2454-
return database.ProvisionerJob{},xerrors.Errorf("fetch related workspace build: %w",err)
2455-
}
2456-
casedatabase.ProvisionerJobTypeTemplateVersionDryRun,database.ProvisionerJobTypeTemplateVersionImport:
2457-
// Authorized call to get template version.
2458-
_,err:=authorizedTemplateVersionFromJob(ctx,q,job)
2459-
iferr!=nil {
2460-
return database.ProvisionerJob{},xerrors.Errorf("fetch related template version: %w",err)
2461-
}
2462-
default:
2463-
return database.ProvisionerJob{},xerrors.Errorf("unknown job type: %q",job.Type)
2469+
iferr:=q.authorizeProvisionerJob(ctx,job);err!=nil {
2470+
return database.ProvisionerJob{},err
24642471
}
24652472

24662473
returnjob,nil
24672474
}
24682475

24692476
func (q*querier)GetProvisionerJobByIDForUpdate(ctx context.Context,id uuid.UUID) (database.ProvisionerJob,error) {
2470-
iferr:=q.authorizeContext(ctx,policy.ActionRead,rbac.ResourceProvisionerJobs);err!=nil {
2477+
job,err:=q.db.GetProvisionerJobByIDForUpdate(ctx,id)
2478+
iferr!=nil {
24712479
return database.ProvisionerJob{},err
24722480
}
2473-
returnq.db.GetProvisionerJobByIDForUpdate(ctx,id)
2481+
2482+
iferr:=q.authorizeProvisionerJob(ctx,job);err!=nil {
2483+
return database.ProvisionerJob{},err
2484+
}
2485+
2486+
returnjob,nil
24742487
}
24752488

24762489
func (q*querier)GetProvisionerJobTimingsByJobID(ctx context.Context,jobID uuid.UUID) ([]database.ProvisionerJobTiming,error) {

‎codersdk/workspacebuilds.go‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ const (
131131
)
132132

133133
typeCancelWorkspaceBuildParamsstruct {
134+
// ExpectStatus ensures the build is in the expected status before canceling.
134135
ExpectStatusCancelWorkspaceBuildStatus`json:"expect_status,omitempty"`
135136
}
136137

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp