Skip to content

Commit 3930c6b

Browse files
committed
simplify RBAC check on GetGroupMembersCountByGroupID
1 parent c2702fc commit 3930c6b

File tree

2 files changed

+9
-18
lines changed

2 files changed

+9
-18
lines changed

coderd/database/dbauthz/dbauthz.go

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1401,20 +1401,13 @@ func (q *querier) GetGroupMembersByGroupID(ctx context.Context, id uuid.UUID) ([
14011401
}
14021402

14031403
func (q *querier) GetGroupMembersCountByGroupID(ctx context.Context, groupID uuid.UUID) (int64, error) {
1404-
group, err := q.GetGroupByID(ctx, groupID)
1405-
if err != nil {
1404+
if _, err := q.GetGroupByID(ctx, groupID); err != nil { // AuthZ check
14061405
return 0, err
14071406
}
14081407
memberCount, err := q.db.GetGroupMembersCountByGroupID(ctx, groupID)
14091408
if err != nil {
14101409
return 0, err
14111410
}
1412-
if err := q.authorizeContext(ctx, policy.ActionRead, database.GroupMembersCountRBACHelper{
1413-
GroupID: groupID,
1414-
OrganizationID: group.OrganizationID,
1415-
}); err != nil {
1416-
return 0, err
1417-
}
14181411
return memberCount, nil
14191412
}
14201413

coderd/database/modelmethods.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -184,22 +184,20 @@ func groupRBACObject(groupID, organizationID uuid.UUID) rbac.Object {
184184
}
185185

186186
func (g Group) RBACObject() rbac.Object {
187-
return groupRBACObject(g.ID, g.OrganizationID)
187+
return rbac.ResourceGroup.WithID(g.ID).
188+
InOrg(g.OrganizationID).
189+
// Group members can read the group.
190+
WithGroupACL(map[string][]policy.Action{
191+
g.ID.String(): {
192+
policy.ActionRead,
193+
},
194+
})
188195
}
189196

190197
func (gm GroupMember) RBACObject() rbac.Object {
191198
return rbac.ResourceGroupMember.WithID(gm.UserID).InOrg(gm.OrganizationID).WithOwner(gm.UserID.String())
192199
}
193200

194-
type GroupMembersCountRBACHelper struct {
195-
GroupID uuid.UUID
196-
OrganizationID uuid.UUID
197-
}
198-
199-
func (r GroupMembersCountRBACHelper) RBACObject() rbac.Object {
200-
return groupRBACObject(r.GroupID, r.OrganizationID)
201-
}
202-
203201
func (w GetWorkspaceByAgentIDRow) RBACObject() rbac.Object {
204202
return w.Workspace.RBACObject()
205203
}

0 commit comments

Comments
 (0)