package okta import ( "context" "fmt" "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcl/v2/gohcl" "github.com/okta/okta-sdk-golang/okta" "git.maze.io/maze/conduit/provider" ) func init() { provider.Register(&provider.Config{ Name: "okta", Init: setup, }) } var ( configuration []okta.ConfigSetter client *okta.Client ) func setup(body hcl.Body) (err error) { var config struct { Client struct { OrgURL string `hcl:"org_url"` Token string `hcl:"token,optional"` ClientID string `hcl:"client_id"` PrivateKey string `hcl:"private_key,optional"` JWT string `hcl:"jwt,optional"` } `hcl:"client,block"` } if diag := gohcl.DecodeBody(body, nil, &config); diag.HasErrors() { return diag } configuration = []okta.ConfigSetter{ okta.WithOrgUrl(config.Client.OrgURL), okta.WithClientId(config.Client.ClientID), } if config.Client.Token != "" { configuration = append(configuration, okta.WithToken(config.Client.Token)) } if config.Client.PrivateKey != "" { configuration = append(configuration, okta.WithPrivateKey(config.Client.PrivateKey)) } if client, err = okta.NewClient(context.TODO(), configuration...); err != nil { return fmt.Errorf("okta: %w", err) } if _, _, err = client.User.ListUsers(nil); err != nil { return fmt.Errorf("okta: %w", err) } return }