From cbf2771935102684a6759572e97e4ff6343d0085 Mon Sep 17 00:00:00 2001 From: Samuel Lorch Date: Fri, 30 Dec 2022 11:12:52 +0100 Subject: [PATCH] fix Double Prompting Issue when Reading Secret Input --- cmd/verify.go | 3 +-- keepass/export.go | 3 +-- util/client.go | 9 ++++----- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/cmd/verify.go b/cmd/verify.go index 7fa94ae..0a12c7e 100644 --- a/cmd/verify.go +++ b/cmd/verify.go @@ -32,8 +32,7 @@ var verifyCMD = &cobra.Command{ userPassword := viper.GetString("userPassword") if userPassword == "" { - fmt.Print("Enter Password:") - pw, err := util.ReadPassword() + pw, err := util.ReadPassword("Enter Password:") if err != nil { fmt.Println() return fmt.Errorf("Reading Password: %w", err) diff --git a/keepass/export.go b/keepass/export.go index a4c34fb..38f422b 100644 --- a/keepass/export.go +++ b/keepass/export.go @@ -53,8 +53,7 @@ func KeepassExport(cmd *cobra.Command, args []string) error { cmd.SilenceUsage = true if keepassPassword == "" { - fmt.Print("Enter Keepass Password:") - pw, err := util.ReadPassword() + pw, err := util.ReadPassword("Enter Keepass Password:") if err != nil { fmt.Println() return fmt.Errorf("Reading Keepass Password: %w", err) diff --git a/util/client.go b/util/client.go index 12d7168..85e8dfc 100644 --- a/util/client.go +++ b/util/client.go @@ -17,11 +17,11 @@ import ( ) // ReadPassword reads a Password interactively or via Pipe -func ReadPassword() (string, error) { +func ReadPassword(prompt string) (string, error) { fd := int(os.Stdin.Fd()) var pass string if term.IsTerminal(fd) { - fmt.Print("Enter Password:") + fmt.Print(prompt) inputPass, err := term.ReadPassword(fd) if err != nil { @@ -54,7 +54,7 @@ func GetClient(ctx context.Context) (*api.Client, error) { userPassword := viper.GetString("userPassword") if userPassword == "" { - cliPassword, err := ReadPassword() + cliPassword, err := ReadPassword("Enter Password:") if err != nil { fmt.Println() return nil, fmt.Errorf("Reading Password: %w", err) @@ -94,8 +94,7 @@ func GetClient(ctx context.Context) (*api.Client, error) { } for i := 0; i < 3; i++ { var code string - fmt.Print("Enter TOTP:") - code, err := ReadPassword() + code, err := ReadPassword("Enter TOTP:") if err != nil { fmt.Printf("\n") return http.Cookie{}, fmt.Errorf("Reading TOTP: %w", err)