mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
feat: Auditing group members as part of group resource (#5730)
* added AuditableGroup type * added json tags * Anonymizing gGroup struct * adding support on the FE for nested group diffs * added type for GroupMember * Update coderd/database/modelmethods.go Co-authored-by: Steven Masley <Emyrk@users.noreply.github.com> * Update coderd/database/modelmethods.go Co-authored-by: Steven Masley <Emyrk@users.noreply.github.com> * fetching group members in group.delete * passing through right error * broke out into util function and added tests Co-authored-by: Steven Masley <Emyrk@users.noreply.github.com>
This commit is contained in:
@ -1,9 +1,38 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"sort"
|
||||
|
||||
"github.com/coder/coder/coderd/rbac"
|
||||
)
|
||||
|
||||
type AuditableGroup struct {
|
||||
Group
|
||||
Members []GroupMember `json:"members"`
|
||||
}
|
||||
|
||||
// Auditable returns an object that can be used in audit logs.
|
||||
// Covers both group and group member changes.
|
||||
func (g Group) Auditable(users []User) AuditableGroup {
|
||||
members := make([]GroupMember, 0, len(users))
|
||||
for _, u := range users {
|
||||
members = append(members, GroupMember{
|
||||
UserID: u.ID,
|
||||
GroupID: g.ID,
|
||||
})
|
||||
}
|
||||
|
||||
// consistent ordering
|
||||
sort.Slice(members, func(i, j int) bool {
|
||||
return members[i].UserID.String() < members[j].UserID.String()
|
||||
})
|
||||
|
||||
return AuditableGroup{
|
||||
Group: g,
|
||||
Members: members,
|
||||
}
|
||||
}
|
||||
|
||||
const AllUsersGroup = "Everyone"
|
||||
|
||||
func (s APIKeyScope) ToRBAC() rbac.Scope {
|
||||
|
Reference in New Issue
Block a user