From db6fbd8513a9ab00b6075979bd9073fb819eb98a Mon Sep 17 00:00:00 2001 From: MJ Palanker Date: Thu, 6 Feb 2025 11:47:05 -0800 Subject: [PATCH 1/3] Handle create account profiles without a login/email, merge them all if needed --- pkg/cli/commands.go | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/pkg/cli/commands.go b/pkg/cli/commands.go index c66ec8a8..0bb8f7de 100644 --- a/pkg/cli/commands.go +++ b/pkg/cli/commands.go @@ -126,15 +126,49 @@ func MakeMainCommand( )) case v.GetBool("event-feed"): opts = append(opts, connectorrunner.WithOnDemandEventStream()) - case v.GetString("create-account-login") != "": + case v.GetString("create-account-profile") != "": profileMap := v.GetStringMap("create-account-profile") if profileMap == nil { - profileMap = make(map[string]interface{}) + return fmt.Errorf("create-account-profile is empty or incorrectly formatted: %v", v.GetString("create-account-profile")) + } + if v.GetString("create-account-login") != "" { + if _, ok := profileMap["login"]; !ok { + profileMap["login"] = v.GetString("create-account-login") + } + } + if v.GetString("create-account-email") != "" { + if _, ok := profileMap["email"]; !ok { + profileMap["email"] = v.GetString("create-account-email") + } + } + login, email := "", "" + if l, ok := profileMap["login"]; ok { + login = l.(string) + } + if e, ok := profileMap["email"]; ok { + email = e.(string) } profile, err := structpb.NewStruct(profileMap) if err != nil { return err } + opts = append(opts, + connectorrunner.WithProvisioningEnabled(), + connectorrunner.WithOnDemandCreateAccount( + v.GetString("file"), + login, + email, + profile, + )) + case v.GetString("create-account-login") != "": + // should only be here if no create-account-profile is provided, so lets make one. + profile, err := structpb.NewStruct(map[string]any{ + "login": v.GetString("create-account-login"), + "email": v.GetString("create-account-email"), + }) + if err != nil { + return err + } opts = append(opts, connectorrunner.WithProvisioningEnabled(), connectorrunner.WithOnDemandCreateAccount( From 3f8446bbb3d9c3a1b4ae81956c7d9c42b87a21c7 Mon Sep 17 00:00:00 2001 From: MJ Palanker Date: Thu, 6 Feb 2025 13:33:34 -0800 Subject: [PATCH 2/3] enable provisioning for profile calls too --- pkg/cli/commands.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/cli/commands.go b/pkg/cli/commands.go index 0bb8f7de..e24ee9d0 100644 --- a/pkg/cli/commands.go +++ b/pkg/cli/commands.go @@ -312,6 +312,8 @@ func MakeGRPCServerCommand( copts = append(copts, connector.WithProvisioningEnabled()) case v.GetString("revoke-grant") != "": copts = append(copts, connector.WithProvisioningEnabled()) + case v.GetString("create-account-profile") != "": + copts = append(copts, connector.WithProvisioningEnabled()) case v.GetString("create-account-login") != "" || v.GetString("create-account-email") != "": copts = append(copts, connector.WithProvisioningEnabled()) case v.GetString("delete-resource") != "" || v.GetString("delete-resource-type") != "": From 58ace9fa23c44bd3c871cd774c463873913b3382 Mon Sep 17 00:00:00 2001 From: MJ Palanker Date: Thu, 6 Feb 2025 16:25:41 -0800 Subject: [PATCH 3/3] dont panic, only take strings --- pkg/cli/commands.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/cli/commands.go b/pkg/cli/commands.go index e24ee9d0..74ce0054 100644 --- a/pkg/cli/commands.go +++ b/pkg/cli/commands.go @@ -143,10 +143,14 @@ func MakeMainCommand( } login, email := "", "" if l, ok := profileMap["login"]; ok { - login = l.(string) + if l, ok := l.(string); ok { + login = l + } } if e, ok := profileMap["email"]; ok { - email = e.(string) + if e, ok := e.(string); ok { + email = e + } } profile, err := structpb.NewStruct(profileMap) if err != nil {