(ctx context.Context, req *adminv1.ListProjectMemberUsergroupsRequest)
| 205 | } |
| 206 | |
| 207 | func (s *Server) ListProjectMemberUsergroups(ctx context.Context, req *adminv1.ListProjectMemberUsergroupsRequest) (*adminv1.ListProjectMemberUsergroupsResponse, error) { |
| 208 | observability.AddRequestAttributes(ctx, |
| 209 | attribute.String("args.org", req.Org), |
| 210 | attribute.String("args.project", req.Project), |
| 211 | ) |
| 212 | |
| 213 | proj, err := s.admin.DB.FindProjectByName(ctx, req.Org, req.Project) |
| 214 | if err != nil { |
| 215 | return nil, err |
| 216 | } |
| 217 | |
| 218 | claims := auth.GetClaims(ctx) |
| 219 | if !claims.ProjectPermissions(ctx, proj.OrganizationID, proj.ID).ReadProjectMembers { |
| 220 | return nil, status.Error(codes.PermissionDenied, "not allowed to list project user groups") |
| 221 | } |
| 222 | |
| 223 | token, err := unmarshalPageToken(req.PageToken) |
| 224 | if err != nil { |
| 225 | return nil, err |
| 226 | } |
| 227 | pageSize := validPageSize(req.PageSize) |
| 228 | |
| 229 | var roleID string |
| 230 | if req.Role != "" { |
| 231 | role, err := s.admin.DB.FindProjectRole(ctx, req.Role) |
| 232 | if err != nil { |
| 233 | return nil, err |
| 234 | } |
| 235 | roleID = role.ID |
| 236 | } |
| 237 | |
| 238 | members, err := s.admin.DB.FindProjectMemberUsergroups(ctx, proj.ID, roleID, req.IncludeCounts, token.Val, pageSize) |
| 239 | if err != nil { |
| 240 | return nil, err |
| 241 | } |
| 242 | |
| 243 | nextToken := "" |
| 244 | if len(members) >= pageSize { |
| 245 | nextToken = marshalPageToken(members[len(members)-1].Name) |
| 246 | } |
| 247 | |
| 248 | dtos := make([]*adminv1.MemberUsergroup, len(members)) |
| 249 | for i, m := range members { |
| 250 | dtos[i] = memberUsergroupToPB(m) |
| 251 | } |
| 252 | |
| 253 | return &adminv1.ListProjectMemberUsergroupsResponse{ |
| 254 | Members: dtos, |
| 255 | NextPageToken: nextToken, |
| 256 | }, nil |
| 257 | } |
| 258 | |
| 259 | func (s *Server) DeleteUsergroup(ctx context.Context, req *adminv1.DeleteUsergroupRequest) (*adminv1.DeleteUsergroupResponse, error) { |
| 260 | observability.AddRequestAttributes(ctx, |
nothing calls this directly
no test coverage detected