Skip to content

Commit 9f7d276

Browse files
committed
fixup! authzquery: fixes in workspaces.go
1 parent 8a8ce06 commit 9f7d276

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

coderd/authzquery/workspace.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,21 @@ func (q *AuthzQuerier) GetWorkspaceResourcesByJobID(ctx context.Context, jobID u
282282
var obj rbac.Objecter
283283
switch job.Type {
284284
case database.ProvisionerJobTypeTemplateVersionDryRun, database.ProvisionerJobTypeTemplateVersionImport:
285-
obj = rbac.ResourceTemplate.InOrg(job.OrganizationID).WithOwner(job.InitiatorID.String())
285+
// We need to check if the actor is authorized to read the related template.
286+
tv, err := authorizedTemplateVersionFromJob(ctx, q, job)
287+
if err != nil {
288+
return nil, err
289+
}
290+
if !tv.TemplateID.Valid {
291+
// Orphaned template version
292+
obj = tv.RBACObjectNoTemplate()
293+
} else {
294+
template, err := q.GetTemplateByID(ctx, tv.TemplateID.UUID)
295+
if err != nil {
296+
return nil, err
297+
}
298+
obj = template.RBACObject()
299+
}
286300
case database.ProvisionerJobTypeWorkspaceBuild:
287301
obj = rbac.ResourceWorkspace.InOrg(job.OrganizationID).WithOwner(job.InitiatorID.String())
288302
default:

0 commit comments

Comments
 (0)