Skip to content

Commit ab1f6ce

Browse files
authored
fix: Deleting a user from a group should only delete from a single group (coder#5977)
1 parent 271d68c commit ab1f6ce

File tree

5 files changed

+32
-14
lines changed

5 files changed

+32
-14
lines changed

coderd/database/databasefake/databasefake.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3551,12 +3551,12 @@ func (q *fakeQuerier) InsertGroupMember(_ context.Context, arg database.InsertGr
35513551
return nil
35523552
}
35533553

3554-
func (q *fakeQuerier) DeleteGroupMember(_ context.Context, userID uuid.UUID) error {
3554+
func (q *fakeQuerier) DeleteGroupMemberFromGroup(_ context.Context, arg database.DeleteGroupMemberFromGroupParams) error {
35553555
q.mutex.Lock()
35563556
defer q.mutex.Unlock()
35573557

35583558
for i, member := range q.groupMembers {
3559-
if member.UserID == userID {
3559+
if member.UserID == arg.UserID && member.GroupID == arg.GroupID {
35603560
q.groupMembers = append(q.groupMembers[:i], q.groupMembers[i+1:]...)
35613561
}
35623562
}

coderd/database/querier.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

Lines changed: 11 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/groups.sql

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,14 @@ INSERT INTO group_members (
8585
user_id,
8686
group_id
8787
)
88-
VALUES ( $1, $2);
88+
VALUES ($1, $2);
8989

90-
-- name: DeleteGroupMember :exec
90+
-- name: DeleteGroupMemberFromGroup :exec
9191
DELETE FROM
9292
group_members
9393
WHERE
94-
user_id = $1;
94+
user_id = $1 AND
95+
group_id = $2;
9596

9697
-- name: DeleteGroupByID :exec
9798
DELETE FROM

enterprise/coderd/groups.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,16 +207,27 @@ func (api *API) patchGroup(rw http.ResponseWriter, r *http.Request) {
207207
}
208208

209209
for _, id := range req.AddUsers {
210-
err := tx.InsertGroupMember(ctx, database.InsertGroupMemberParams{
210+
userID, err := uuid.Parse(id)
211+
if err != nil {
212+
return xerrors.Errorf("parse user ID %q: %w", id, err)
213+
}
214+
err = tx.InsertGroupMember(ctx, database.InsertGroupMemberParams{
211215
GroupID: group.ID,
212-
UserID: uuid.MustParse(id),
216+
UserID: userID,
213217
})
214218
if err != nil {
215219
return xerrors.Errorf("insert group member %q: %w", id, err)
216220
}
217221
}
218222
for _, id := range req.RemoveUsers {
219-
err := tx.DeleteGroupMember(ctx, uuid.MustParse(id))
223+
userID, err := uuid.Parse(id)
224+
if err != nil {
225+
return xerrors.Errorf("parse user ID %q: %w", id, err)
226+
}
227+
err = tx.DeleteGroupMemberFromGroup(ctx, database.DeleteGroupMemberFromGroupParams{
228+
UserID: userID,
229+
GroupID: group.ID,
230+
})
220231
if err != nil {
221232
return xerrors.Errorf("insert group member %q: %w", id, err)
222233
}

0 commit comments

Comments
 (0)