From b4af382a16e06219d07f95aa29af5afc30e6dc16 Mon Sep 17 00:00:00 2001
From: Malte Bauch <malte.bauch@tbnet.works>
Date: Thu, 12 May 2022 09:43:04 +0000
Subject: [PATCH] Resolve "CLI can currently only be used in prompt mode
 because authorization can not be set in the other mode"

See merge request danet/gosdn!309

Co-authored-by: Malte Bauch <malte.bauch@extern.h-da.de>
---
 cli/cmd/login.go | 13 +++++++++----
 cli/cmd/root.go  |  7 +++++--
 cli/cmd/utils.go |  2 --
 3 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/cli/cmd/login.go b/cli/cmd/login.go
index e1c8fdeb4..19c48e60a 100644
--- a/cli/cmd/login.go
+++ b/cli/cmd/login.go
@@ -67,16 +67,21 @@ var loginCmd = &cobra.Command{
 		spinner.Success("Authentication for ", nbUserName, " was successful.")
 
 		userToken = resp.Token
+
+		viper.Set("USER_TOKEN", userToken)
+
+		err = viper.WriteConfig()
+		if err != nil {
+			pterm.Error.Println(err)
+			return err
+		}
+
 		pterm.Info.Println("Authentication-User-Token:", userToken)
 
 		return nil
 	},
 }
 
-var nbUserName string
-var nbUserPwd string
-var controllerAPIEndpoint string
-
 func init() {
 	rootCmd.AddCommand(loginCmd)
 
diff --git a/cli/cmd/root.go b/cli/cmd/root.go
index 00206c1fa..f64c57032 100644
--- a/cli/cmd/root.go
+++ b/cli/cmd/root.go
@@ -48,6 +48,10 @@ var loglevel string
 var grpcPort string
 var cliPnd string
 var cliSbi string
+var controllerAPIEndpoint string
+var nbUserName string
+var nbUserPwd string
+var userToken string
 
 var pndAdapter *adapter.PndAdapter
 
@@ -120,10 +124,9 @@ func initConfig() {
 		}
 	}
 
-	viper.SetDefault("socket", ":"+grpcPort)
-
 	cliPnd = viper.GetString("CLI_PND")
 	cliSbi = viper.GetString("CLI_SBI")
+	userToken = viper.GetString("USER_TOKEN")
 
 	ll := viper.GetString("GOSDN_LOG")
 	if ll != "" {
diff --git a/cli/cmd/utils.go b/cli/cmd/utils.go
index 0e5df4a66..27478a991 100644
--- a/cli/cmd/utils.go
+++ b/cli/cmd/utils.go
@@ -39,8 +39,6 @@ import (
 	"google.golang.org/grpc/metadata"
 )
 
-var userToken string
-
 func checkIPPort(string) error {
 	// check if address is in the format <IP>:<port>
 	ip, _, err := net.SplitHostPort(address)
-- 
GitLab