Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8a26947

Browse files
committed
UsePostFilter
1 parent 0b98766 commit 8a26947

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

coderd/database/dbauthz/querier.go

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1143,17 +1143,7 @@ func (q *querier) GetLatestWorkspaceBuildByWorkspaceID(ctx context.Context, work
11431143
}
11441144

11451145
func (q *querier) GetLatestWorkspaceBuildsByWorkspaceIDs(ctx context.Context, ids []uuid.UUID) ([]database.WorkspaceBuild, error) {
1146-
// This is not ideal as not all builds will be returned if the workspace cannot be read.
1147-
// This should probably be handled differently? Maybe join workspace builds with workspace
1148-
// ownership properties and filter on that.
1149-
for _, id := range ids {
1150-
_, err := q.GetWorkspaceByID(ctx, id)
1151-
if err != nil {
1152-
return nil, err
1153-
}
1154-
}
1155-
1156-
return q.db.GetLatestWorkspaceBuildsByWorkspaceIDs(ctx, ids)
1146+
return fetchWithPostFilter(q.auth, q.db.GetLatestWorkspaceBuildsByWorkspaceIDs)(ctx, ids)
11571147
}
11581148

11591149
func (q *querier) GetWorkspaceAgentByID(ctx context.Context, id uuid.UUID) (database.WorkspaceAgent, error) {
@@ -1255,10 +1245,19 @@ func (q *querier) GetWorkspaceBuildParameters(ctx context.Context, workspaceBuil
12551245
}
12561246

12571247
func (q *querier) GetWorkspaceBuildsByWorkspaceID(ctx context.Context, arg database.GetWorkspaceBuildsByWorkspaceIDParams) ([]database.WorkspaceBuild, error) {
1258-
if _, err := q.GetWorkspaceByID(ctx, arg.WorkspaceID); err != nil {
1248+
builds, err := q.db.GetWorkspaceBuildsByWorkspaceID(ctx, arg)
1249+
if err != nil {
1250+
return nil, err
1251+
}
1252+
if len(builds) == 0 {
1253+
return nil, sql.ErrNoRows
1254+
}
1255+
// All builds come from the same workspace, so we only need to check the first one.
1256+
err = q.authorizeContext(ctx, rbac.ActionRead, builds[0])
1257+
if err != nil {
12591258
return nil, err
12601259
}
1261-
return q.db.GetWorkspaceBuildsByWorkspaceID(ctx, arg)
1260+
return builds, nil
12621261
}
12631262

12641263
func (q *querier) GetWorkspaceByAgentID(ctx context.Context, agentID uuid.UUID) (database.Workspace, error) {

0 commit comments

Comments
 (0)