From d4206cdbd82707d5ed3e655bf5e1012c1241d619 Mon Sep 17 00:00:00 2001 From: quinton11 Date: Wed, 19 Apr 2023 19:41:14 +0000 Subject: [PATCH] login and user update commands support for existing domain override methods --- cli/packages/cmd/login.go | 51 +++++++++++++++++++++++++++----- cli/packages/cmd/user.go | 26 +++++++++++++--- cli/packages/config/config.go | 1 + cli/packages/util/credentials.go | 1 + 4 files changed, 68 insertions(+), 11 deletions(-) diff --git a/cli/packages/cmd/login.go b/cli/packages/cmd/login.go index 58d66b17f..dd4018e77 100644 --- a/cli/packages/cmd/login.go +++ b/cli/packages/cmd/login.go @@ -65,10 +65,29 @@ var loginCmd = &cobra.Command{ } } + //override domain + domainQuery := true + if config.INFISICAL_URL_MANUAL_OVERRIDE != util.INFISICAL_DEFAULT_API_URL { + overrideDomain, err := DomainOverridePrompt() + if err != nil { + util.HandleError(err) + } + + //if not override set INFISICAL_URL to exported var + //set domainQuery to false + if !overrideDomain { + domainQuery = false + config.INFISICAL_URL = config.INFISICAL_URL_MANUAL_OVERRIDE + } + + } + //prompt user to select domain between Infisical cloud and self hosting - err = askForDomain() - if err != nil { - util.HandleError(err, "Unable to parse domain url") + if domainQuery { + err = askForDomain() + if err != nil { + util.HandleError(err, "Unable to parse domain url") + } } email, password, err := askForLoginCredentials() @@ -264,6 +283,27 @@ func init() { rootCmd.AddCommand(loginCmd) } +func DomainOverridePrompt() (bool, error) { + var ( + PRESET = "Use Domain" + OVERRIDE = "Change Domain" + ) + + options := []string{PRESET, OVERRIDE} + optionsPrompt := promptui.Select{ + Label: fmt.Sprintf("Current INFISICAL_API_URL Domain Override: %s", config.INFISICAL_URL_MANUAL_OVERRIDE), + Items: options, + Size: 2, + } + + _, selectedOption, err := optionsPrompt.Run() + if err != nil { + return false, err + } + + return selectedOption == OVERRIDE, err +} + func askForDomain() error { //query user to choose between Infisical cloud or self hosting var ( @@ -405,10 +445,7 @@ func getFreshUserCredentials(email string, password string) (*api.GetLoginOneV2R } func userLoginMenu(currentLoggedInUserEmail string) (bool, error) { - label := fmt.Sprintf("Current logged in user email: %s", currentLoggedInUserEmail) - if config.INFISICAL_URL != "" { - label = fmt.Sprintf("%s on domain: %s", label, config.INFISICAL_URL) - } + label := fmt.Sprintf("Current logged in user email: %s on domain: %s", currentLoggedInUserEmail, config.INFISICAL_URL) prompt := promptui.Select{ Label: label, diff --git a/cli/packages/cmd/user.go b/cli/packages/cmd/user.go index 5cdd56d93..a9b54ba3a 100644 --- a/cli/packages/cmd/user.go +++ b/cli/packages/cmd/user.go @@ -111,10 +111,28 @@ var domainCmd = &cobra.Command{ util.HandleError(err, "[infisical user update domain]: Prompt error") } - //prompt to update domain - domain, err := NewDomainPrompt() - if err != nil { - util.HandleError(err, "[infisical user update domain]: Prompt error") + domain := "" + domainQuery := true + if config.INFISICAL_URL_MANUAL_OVERRIDE != util.INFISICAL_DEFAULT_API_URL { + + override, err := DomainOverridePrompt() + if err != nil { + util.HandleError(err, "[infisical user update domain]: Domain override prompt error") + } + + if !override { + domainQuery = false + domain = config.INFISICAL_URL_MANUAL_OVERRIDE + } + + } + + if domainQuery { + //prompt to update domain + domain, err = NewDomainPrompt() + if err != nil { + util.HandleError(err, "[infisical user update domain]: Prompt error") + } } //write to config file diff --git a/cli/packages/config/config.go b/cli/packages/config/config.go index 6c56858e6..e27bc8f68 100644 --- a/cli/packages/config/config.go +++ b/cli/packages/config/config.go @@ -1,3 +1,4 @@ package config var INFISICAL_URL string +var INFISICAL_URL_MANUAL_OVERRIDE string diff --git a/cli/packages/util/credentials.go b/cli/packages/util/credentials.go index b06ed4ef6..96a6b378a 100644 --- a/cli/packages/util/credentials.go +++ b/cli/packages/util/credentials.go @@ -91,6 +91,7 @@ func GetCurrentLoggedInUserDetails() (LoggedInUserDetails, error) { //configFile.LoggedInUserDomain //if not empty set as infisical url if configFile.LoggedInUserDomain != "" { + config.INFISICAL_URL_MANUAL_OVERRIDE = config.INFISICAL_URL config.INFISICAL_URL = configFile.LoggedInUserDomain }