Skip to content

Commit c6c7b5c

Browse files
committed
chore: dbauthz
Signed-off-by: Danny Kopping <[email protected]>
1 parent 57da39f commit c6c7b5c

File tree

2 files changed

+64
-1
lines changed

2 files changed

+64
-1
lines changed

coderd/database/dbauthz/dbauthz.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4914,7 +4914,18 @@ func (q *querier) UpdateWorkspaceAutostart(ctx context.Context, arg database.Upd
49144914
}
49154915

49164916
func (q *querier) UpdateWorkspaceBuildAITaskByID(ctx context.Context, arg database.UpdateWorkspaceBuildAITaskByIDParams) error {
4917-
if err := q.authorizeContext(ctx, policy.ActionUpdate, rbac.ResourceSystem); err != nil {
4917+
build, err := q.db.GetWorkspaceBuildByID(ctx, arg.ID)
4918+
if err != nil {
4919+
return err
4920+
}
4921+
4922+
workspace, err := q.db.GetWorkspaceByID(ctx, build.WorkspaceID)
4923+
if err != nil {
4924+
return err
4925+
}
4926+
4927+
err = q.authorizeContext(ctx, policy.ActionUpdate, workspace.RBACObject())
4928+
if err != nil {
49184929
return err
49194930
}
49204931
return q.db.UpdateWorkspaceBuildAITaskByID(ctx, arg)

coderd/database/dbauthz/dbauthz_test.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1391,6 +1391,24 @@ func (s *MethodTestSuite) TestTemplate() {
13911391
ID: t1.ID,
13921392
}).Asserts(t1, policy.ActionUpdate)
13931393
}))
1394+
s.Run("UpdateTemplateVersionAITaskByJobID", s.Subtest(func(db database.Store, check *expects) {
1395+
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
1396+
o := dbgen.Organization(s.T(), db, database.Organization{})
1397+
u := dbgen.User(s.T(), db, database.User{})
1398+
_ = dbgen.OrganizationMember(s.T(), db, database.OrganizationMember{OrganizationID: o.ID, UserID: u.ID})
1399+
t := dbgen.Template(s.T(), db, database.Template{OrganizationID: o.ID, CreatedBy: u.ID})
1400+
job := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{OrganizationID: o.ID})
1401+
_ = dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1402+
OrganizationID: o.ID,
1403+
CreatedBy: u.ID,
1404+
JobID: job.ID,
1405+
TemplateID: uuid.NullUUID{UUID: t.ID, Valid: true},
1406+
})
1407+
check.Args(database.UpdateTemplateVersionAITaskByJobIDParams{
1408+
JobID: job.ID,
1409+
HasAITask: sql.NullBool{Bool: true, Valid: true},
1410+
}).Asserts(t, policy.ActionUpdate)
1411+
}))
13941412
s.Run("UpdateTemplateWorkspacesLastUsedAt", s.Subtest(func(db database.Store, check *expects) {
13951413
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
13961414
t1 := dbgen.Template(s.T(), db, database.Template{})
@@ -3050,6 +3068,40 @@ func (s *MethodTestSuite) TestWorkspace() {
30503068
Deadline: b.Deadline,
30513069
}).Asserts(w, policy.ActionUpdate)
30523070
}))
3071+
s.Run("UpdateWorkspaceBuildAITaskByID", s.Subtest(func(db database.Store, check *expects) {
3072+
u := dbgen.User(s.T(), db, database.User{})
3073+
o := dbgen.Organization(s.T(), db, database.Organization{})
3074+
tpl := dbgen.Template(s.T(), db, database.Template{
3075+
OrganizationID: o.ID,
3076+
CreatedBy: u.ID,
3077+
})
3078+
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
3079+
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
3080+
OrganizationID: o.ID,
3081+
CreatedBy: u.ID,
3082+
})
3083+
w := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
3084+
TemplateID: tpl.ID,
3085+
OrganizationID: o.ID,
3086+
OwnerID: u.ID,
3087+
})
3088+
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{
3089+
Type: database.ProvisionerJobTypeWorkspaceBuild,
3090+
})
3091+
b := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{
3092+
JobID: j.ID,
3093+
WorkspaceID: w.ID,
3094+
TemplateVersionID: tv.ID,
3095+
})
3096+
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: b.JobID})
3097+
agt := dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
3098+
app := dbgen.WorkspaceApp(s.T(), db, database.WorkspaceApp{AgentID: agt.ID})
3099+
check.Args(database.UpdateWorkspaceBuildAITaskByIDParams{
3100+
HasAITask: sql.NullBool{Bool: true, Valid: true},
3101+
SidebarAppID: uuid.NullUUID{UUID: app.ID, Valid: true},
3102+
ID: b.ID,
3103+
}).Asserts(w, policy.ActionUpdate)
3104+
}))
30533105
s.Run("SoftDeleteWorkspaceByID", s.Subtest(func(db database.Store, check *expects) {
30543106
u := dbgen.User(s.T(), db, database.User{})
30553107
o := dbgen.Organization(s.T(), db, database.Organization{})

0 commit comments

Comments
 (0)