mirror of
https://github.com/coder/coder.git
synced 2025-07-15 22:20:27 +00:00
fix: allow group members to read group information (#14200)
* - allow group members to read basic Group info - allow group members to see they are part of the group, but not see that information about other members - add a GetGroupMembersCountByGroupID SQL query, which allows group members to see members count without revealing other information about the members - add the group_members_expanded db view - rewrite group member queries to use the group_members_expanded view - add the RBAC ResourceGroupMember and add it to relevant roles - rewrite GetGroupMembersByGroupID permission checks - make the GroupMember type contain all user fields - fix type issues coming from replacing User with GroupMember in group member queries - add the MemberTotalCount field to codersdk.Group - display `group.total_member_count` instead of `group.members.length` on the account page
This commit is contained in:
@ -159,6 +159,35 @@ func ReducedUser(user database.User) codersdk.ReducedUser {
|
||||
}
|
||||
}
|
||||
|
||||
func UserFromGroupMember(member database.GroupMember) database.User {
|
||||
return database.User{
|
||||
ID: member.UserID,
|
||||
Email: member.UserEmail,
|
||||
Username: member.UserUsername,
|
||||
HashedPassword: member.UserHashedPassword,
|
||||
CreatedAt: member.UserCreatedAt,
|
||||
UpdatedAt: member.UserUpdatedAt,
|
||||
Status: member.UserStatus,
|
||||
RBACRoles: member.UserRbacRoles,
|
||||
LoginType: member.UserLoginType,
|
||||
AvatarURL: member.UserAvatarUrl,
|
||||
Deleted: member.UserDeleted,
|
||||
LastSeenAt: member.UserLastSeenAt,
|
||||
QuietHoursSchedule: member.UserQuietHoursSchedule,
|
||||
ThemePreference: member.UserThemePreference,
|
||||
Name: member.UserName,
|
||||
GithubComUserID: member.UserGithubComUserID,
|
||||
}
|
||||
}
|
||||
|
||||
func ReducedUserFromGroupMember(member database.GroupMember) codersdk.ReducedUser {
|
||||
return ReducedUser(UserFromGroupMember(member))
|
||||
}
|
||||
|
||||
func ReducedUsersFromGroupMembers(members []database.GroupMember) []codersdk.ReducedUser {
|
||||
return List(members, ReducedUserFromGroupMember)
|
||||
}
|
||||
|
||||
func ReducedUsers(users []database.User) []codersdk.ReducedUser {
|
||||
return List(users, ReducedUser)
|
||||
}
|
||||
@ -179,16 +208,17 @@ func Users(users []database.User, organizationIDs map[uuid.UUID][]uuid.UUID) []c
|
||||
})
|
||||
}
|
||||
|
||||
func Group(group database.Group, members []database.User) codersdk.Group {
|
||||
func Group(group database.Group, members []database.GroupMember, totalMemberCount int) codersdk.Group {
|
||||
return codersdk.Group{
|
||||
ID: group.ID,
|
||||
Name: group.Name,
|
||||
DisplayName: group.DisplayName,
|
||||
OrganizationID: group.OrganizationID,
|
||||
AvatarURL: group.AvatarURL,
|
||||
Members: ReducedUsers(members),
|
||||
QuotaAllowance: int(group.QuotaAllowance),
|
||||
Source: codersdk.GroupSource(group.Source),
|
||||
ID: group.ID,
|
||||
Name: group.Name,
|
||||
DisplayName: group.DisplayName,
|
||||
OrganizationID: group.OrganizationID,
|
||||
AvatarURL: group.AvatarURL,
|
||||
Members: ReducedUsersFromGroupMembers(members),
|
||||
TotalMemberCount: totalMemberCount,
|
||||
QuotaAllowance: int(group.QuotaAllowance),
|
||||
Source: codersdk.GroupSource(group.Source),
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user