Skip to content

Commit

Permalink
Fix lint
Browse files Browse the repository at this point in the history
  • Loading branch information
florindragos committed May 23, 2024
1 parent bb5daf4 commit 4b9f06b
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 70 deletions.
83 changes: 48 additions & 35 deletions plugins/auth0/pkg/fetch/fetch.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,43 +62,16 @@ func (f *Fetcher) Fetch(ctx context.Context, outputWriter, errorWriter io.Writer
defer writer.Close()

if f.Roles {
page := 0

for f.Roles {
opts := []management.RequestOption{management.Page(page)}
if f.ConnectionName != "" {
opts = append(opts, management.Query(`identities.connection:"`+f.ConnectionName+`"`))
}

roles, more, err := f.getRoles(ctx, opts)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
common.SetExitCode(1)
return err
}

for _, role := range roles {
res := role.String()
var obj map[string]interface{}
err = json.Unmarshal([]byte(res), &obj)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
common.SetExitCode(1)
continue
}
obj["object_type"] = "role"
err = writer.Write(obj)
if err != nil {
return err
}
}
if !more {
break
}
page++
err := f.fetchGroups(ctx, writer, errorWriter)
if err != nil {
return err
}
}

return f.fetchUsers(ctx, writer, errorWriter)
}

func (f *Fetcher) fetchUsers(ctx context.Context, outputWriter *js.JSONArrayWriter, errorWriter io.Writer) error {
page := 0

for {
Expand Down Expand Up @@ -149,7 +122,47 @@ func (f *Fetcher) Fetch(ctx context.Context, outputWriter, errorWriter io.Writer
}
}

err = writer.Write(obj)
err = outputWriter.Write(obj)
if err != nil {
return err
}
}
if !more {
break
}
page++
}

return nil
}

func (f *Fetcher) fetchGroups(ctx context.Context, outputWriter *js.JSONArrayWriter, errorWriter io.Writer) error {
page := 0

for f.Roles {
opts := []management.RequestOption{management.Page(page)}
if f.ConnectionName != "" {
opts = append(opts, management.Query(`identities.connection:"`+f.ConnectionName+`"`))
}

roles, more, err := f.getRoles(ctx, opts)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
common.SetExitCode(1)
return err
}

for _, role := range roles {
res := role.String()
var obj map[string]interface{}
err = json.Unmarshal([]byte(res), &obj)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
common.SetExitCode(1)
continue
}
obj["object_type"] = "role"
err = outputWriter.Write(obj)
if err != nil {
return err
}
Expand Down
78 changes: 43 additions & 35 deletions plugins/okta/pkg/fetch/fetch.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ type Fetcher struct {
}

func New(ctx context.Context, client *oktaclient.OktaClient) (*Fetcher, error) {

return &Fetcher{
oktaClient: client,
}, nil
Expand All @@ -36,49 +35,58 @@ func (fetcher *Fetcher) WithRoles(roles bool) *Fetcher {
}

func (fetcher *Fetcher) Fetch(ctx context.Context, outputWriter, errorWriter io.Writer) error {
var response *okta.Response
var users []*okta.User
var err error

writer := js.NewJSONArrayWriter(outputWriter)
defer writer.Close()

if fetcher.Groups {
groups, response, err := fetcher.oktaClient.Group.ListGroups(ctx, nil)
if fetcher.Roles {
err := fetcher.fetchGroups(ctx, writer, errorWriter)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
common.SetExitCode(1)
return err
}
}

return fetcher.fetchUsers(ctx, writer, errorWriter)
}

for {
logIfRateLimitExceeded(response, errorWriter)

for _, group := range groups {
groupResult, err := fetcher.processGroup(ctx, group, errorWriter)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
common.SetExitCode(1)
}
err = writer.Write(groupResult)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
}
func (fetcher *Fetcher) fetchUsers(ctx context.Context, writer *js.JSONArrayWriter, errorWriter io.Writer) error {
users, response, err := fetcher.oktaClient.User.ListUsers(ctx, nil)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
common.SetExitCode(1)
return err
}

for {
logIfRateLimitExceeded(response, errorWriter)

for _, user := range users {
userResult, err := fetcher.processUser(ctx, user, errorWriter)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
common.SetExitCode(1)
}
err = writer.Write(userResult)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
}
}

if response != nil && response.HasNextPage() {
response, err = response.Next(ctx, &users)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
common.SetExitCode(1)
}
} else {
break
if response != nil && response.HasNextPage() {
response, err = response.Next(ctx, &users)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
common.SetExitCode(1)
}
} else {
break
}
}

users, response, err = fetcher.oktaClient.User.ListUsers(ctx, nil)
return nil
}

func (fetcher *Fetcher) fetchGroups(ctx context.Context, writer *js.JSONArrayWriter, errorWriter io.Writer) error {
groups, response, err := fetcher.oktaClient.Group.ListGroups(ctx, nil)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
common.SetExitCode(1)
Expand All @@ -88,20 +96,20 @@ func (fetcher *Fetcher) Fetch(ctx context.Context, outputWriter, errorWriter io.
for {
logIfRateLimitExceeded(response, errorWriter)

for _, user := range users {
userResult, err := fetcher.processUser(ctx, user, errorWriter)
for _, group := range groups {
groupResult, err := fetcher.processGroup(ctx, group, errorWriter)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
common.SetExitCode(1)
}
err = writer.Write(userResult)
err = writer.Write(groupResult)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
}
}

if response != nil && response.HasNextPage() {
response, err = response.Next(ctx, &users)
response, err = response.Next(ctx, &groups)
if err != nil {
_, _ = errorWriter.Write([]byte(err.Error()))
common.SetExitCode(1)
Expand Down

0 comments on commit 4b9f06b

Please sign in to comment.