Merge branch 'release-v1.0.0' into NM-96-v1

This commit is contained in:
Abhishek K 2025-08-28 21:27:29 +05:30 committed by GitHub
commit bbbe96ad7b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 50 additions and 3 deletions

View file

@ -168,7 +168,7 @@ func buildPrefixFilter(field string, prefixes []string) string {
return fmt.Sprintf("$filter=startswith(%s,'%s')", field, prefixes[0])
}
return buildPrefixFilter(field, prefixes[1:]) + fmt.Sprintf("%%20or%%20startswith(%s,'%s')", field, prefixes[0])
return buildPrefixFilter(field, prefixes[:1]) + "%20or%20" + buildPrefixFilter(field, prefixes[1:])
}
type getUsersResponse struct {

View file

@ -4,6 +4,7 @@ import (
"context"
"encoding/base64"
"encoding/json"
"strings"
"github.com/gravitl/netmaker/logic"
"github.com/gravitl/netmaker/pro/idp"
@ -67,6 +68,21 @@ func (g *Client) GetUsers(filters []string) ([]idp.User, error) {
Fields("users(id,primaryEmail,name,suspended,archived)", "nextPageToken").
Pages(context.TODO(), func(users *admindir.Users) error {
for _, user := range users.Users {
var keep bool
if len(filters) > 0 {
for _, filter := range filters {
if strings.HasPrefix(user.PrimaryEmail, filter) {
keep = true
}
}
} else {
keep = true
}
if !keep {
continue
}
retval = append(retval, idp.User{
ID: user.Id,
Username: user.PrimaryEmail,
@ -89,6 +105,21 @@ func (g *Client) GetGroups(filters []string) ([]idp.Group, error) {
Fields("groups(id,name)", "nextPageToken").
Pages(context.TODO(), func(groups *admindir.Groups) error {
for _, group := range groups.Groups {
var keep bool
if len(filters) > 0 {
for _, filter := range filters {
if strings.HasPrefix(group.Name, filter) {
keep = true
}
}
} else {
keep = true
}
if !keep {
continue
}
var retvalMembers []string
err := g.service.Members.List(group.Id).
Fields("members(id)", "nextPageToken").

View file

@ -48,7 +48,9 @@ func (o *Client) GetUsers(filters []string) ([]idp.User, error) {
var allUsersFetched bool
for !allUsersFetched {
users, resp, err := o.client.UserAPI.ListUsers(context.TODO()).Execute()
users, resp, err := o.client.UserAPI.ListUsers(context.TODO()).
Search(buildPrefixFilter("profile.login", filters)).
Execute()
if err != nil {
return nil, err
}
@ -87,7 +89,9 @@ func (o *Client) GetGroups(filters []string) ([]idp.Group, error) {
var allGroupsFetched bool
for !allGroupsFetched {
groups, resp, err := o.client.GroupAPI.ListGroups(context.TODO()).Execute()
groups, resp, err := o.client.GroupAPI.ListGroups(context.TODO()).
Search(buildPrefixFilter("profile.name", filters)).
Execute()
if err != nil {
return nil, err
}
@ -123,3 +127,15 @@ func (o *Client) GetGroups(filters []string) ([]idp.Group, error) {
return retval, nil
}
func buildPrefixFilter(field string, prefixes []string) string {
if len(prefixes) == 0 {
return ""
}
if len(prefixes) == 1 {
return fmt.Sprintf("%s sw \"%s\"", field, prefixes[0])
}
return buildPrefixFilter(field, prefixes[:1]) + " or " + buildPrefixFilter(field, prefixes[1:])
}