mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-05 04:34:30 +08:00
Merge branch 'release-v1.0.0' into NM-96-v1
This commit is contained in:
commit
bbbe96ad7b
3 changed files with 50 additions and 3 deletions
|
@ -168,7 +168,7 @@ func buildPrefixFilter(field string, prefixes []string) string {
|
||||||
return fmt.Sprintf("$filter=startswith(%s,'%s')", field, prefixes[0])
|
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 {
|
type getUsersResponse struct {
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/gravitl/netmaker/logic"
|
"github.com/gravitl/netmaker/logic"
|
||||||
"github.com/gravitl/netmaker/pro/idp"
|
"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").
|
Fields("users(id,primaryEmail,name,suspended,archived)", "nextPageToken").
|
||||||
Pages(context.TODO(), func(users *admindir.Users) error {
|
Pages(context.TODO(), func(users *admindir.Users) error {
|
||||||
for _, user := range users.Users {
|
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{
|
retval = append(retval, idp.User{
|
||||||
ID: user.Id,
|
ID: user.Id,
|
||||||
Username: user.PrimaryEmail,
|
Username: user.PrimaryEmail,
|
||||||
|
@ -89,6 +105,21 @@ func (g *Client) GetGroups(filters []string) ([]idp.Group, error) {
|
||||||
Fields("groups(id,name)", "nextPageToken").
|
Fields("groups(id,name)", "nextPageToken").
|
||||||
Pages(context.TODO(), func(groups *admindir.Groups) error {
|
Pages(context.TODO(), func(groups *admindir.Groups) error {
|
||||||
for _, group := range groups.Groups {
|
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
|
var retvalMembers []string
|
||||||
err := g.service.Members.List(group.Id).
|
err := g.service.Members.List(group.Id).
|
||||||
Fields("members(id)", "nextPageToken").
|
Fields("members(id)", "nextPageToken").
|
||||||
|
|
|
@ -48,7 +48,9 @@ func (o *Client) GetUsers(filters []string) ([]idp.User, error) {
|
||||||
var allUsersFetched bool
|
var allUsersFetched bool
|
||||||
|
|
||||||
for !allUsersFetched {
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -87,7 +89,9 @@ func (o *Client) GetGroups(filters []string) ([]idp.Group, error) {
|
||||||
var allGroupsFetched bool
|
var allGroupsFetched bool
|
||||||
|
|
||||||
for !allGroupsFetched {
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -123,3 +127,15 @@ func (o *Client) GetGroups(filters []string) ([]idp.Group, error) {
|
||||||
|
|
||||||
return retval, nil
|
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:])
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue