Skip to content

Commit e5a7cad

Browse files
committed
dbauthz: move GetUsersByIDs out of system, modify RBAC check to ResourceUser
1 parent 970b717 commit e5a7cad

File tree

4 files changed

+19
-18
lines changed

4 files changed

+19
-18
lines changed

coderd/database/dbauthz/querier.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -963,6 +963,18 @@ func (q *querier) GetUserByID(ctx context.Context, id uuid.UUID) (database.User,
963963
return fetch(q.log, q.auth, q.db.GetUserByID)(ctx, id)
964964
}
965965

966+
// GetUsersByIDs is only used for usernames on workspace return data.
967+
// This function should be replaced by joining this data to the workspace query
968+
// itself.
969+
func (q *querier) GetUsersByIDs(ctx context.Context, ids []uuid.UUID) ([]database.User, error) {
970+
for _, uid := range ids {
971+
if err := q.authorizeContext(ctx, rbac.ActionRead, rbac.ResourceUser.WithID(uid)); err != nil {
972+
return nil, err
973+
}
974+
}
975+
return q.db.GetUsersByIDs(ctx, ids)
976+
}
977+
966978
func (q *querier) GetAuthorizedUserCount(ctx context.Context, arg database.GetFilteredUserCountParams, prepared rbac.PreparedAuthorized) (int64, error) {
967979
return q.db.GetAuthorizedUserCount(ctx, arg, prepared)
968980
}

coderd/database/dbauthz/querier_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,13 @@ func (s *MethodTestSuite) TestUser() {
763763
u := dbgen.User(s.T(), db, database.User{})
764764
check.Args(u.ID).Asserts(u, rbac.ActionRead).Returns(u)
765765
}))
766+
s.Run("GetUsersByIDs", s.Subtest(func(db database.Store, check *expects) {
767+
a := dbgen.User(s.T(), db, database.User{CreatedAt: database.Now().Add(-time.Hour)})
768+
b := dbgen.User(s.T(), db, database.User{CreatedAt: database.Now()})
769+
check.Args([]uuid.UUID{a.ID, b.ID}).
770+
Asserts(a, rbac.ActionRead, b, rbac.ActionRead).
771+
Returns(slice.New(a, b))
772+
}))
766773
s.Run("GetAuthorizedUserCount", s.Subtest(func(db database.Store, check *expects) {
767774
_ = dbgen.User(s.T(), db, database.User{})
768775
check.Args(database.GetFilteredUserCountParams{}, emptyPreparedAuthorized{}).Asserts().Returns(int64(1))

coderd/database/dbauthz/system.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,6 @@ func (q *querier) GetWorkspaceResourceMetadataByResourceIDs(ctx context.Context,
3636
}
3737
return q.db.GetWorkspaceResourceMetadataByResourceIDs(ctx, ids)
3838
}
39-
40-
// GetUsersByIDs is only used for usernames on workspace return data.
41-
// This function should be replaced by joining this data to the workspace query
42-
// itself.
43-
func (q *querier) GetUsersByIDs(ctx context.Context, ids []uuid.UUID) ([]database.User, error) {
44-
if err := q.authorizeContext(ctx, rbac.ActionRead, rbac.ResourceSystem); err != nil {
45-
return nil, err
46-
}
47-
return q.db.GetUsersByIDs(ctx, ids)
48-
}
49-
5039
func (q *querier) GetProvisionerJobsByIDs(ctx context.Context, ids []uuid.UUID) ([]database.ProvisionerJob, error) {
5140
if err := q.authorizeContext(ctx, rbac.ActionRead, rbac.ResourceSystem); err != nil {
5241
return nil, err

coderd/database/dbauthz/system_test.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -157,13 +157,6 @@ func (s *MethodTestSuite) TestSystemFunctions() {
157157
Asserts(rbac.ResourceSystem, rbac.ActionRead).
158158
Returns(slice.New(tv1, tv2, tv3))
159159
}))
160-
s.Run("GetUsersByIDs", s.Subtest(func(db database.Store, check *expects) {
161-
a := dbgen.User(s.T(), db, database.User{CreatedAt: database.Now().Add(-time.Hour)})
162-
b := dbgen.User(s.T(), db, database.User{CreatedAt: database.Now()})
163-
check.Args([]uuid.UUID{a.ID, b.ID}).
164-
Asserts(rbac.ResourceSystem, rbac.ActionRead).
165-
Returns(slice.New(a, b))
166-
}))
167160
s.Run("GetWorkspaceAppsByAgentIDs", s.Subtest(func(db database.Store, check *expects) {
168161
aWs := dbgen.Workspace(s.T(), db, database.Workspace{})
169162
aBuild := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: aWs.ID, JobID: uuid.New()})

0 commit comments

Comments
 (0)