fix Double Prompting Issue when Reading Secret Input

This commit is contained in:
Samuel Lorch 2022-12-30 11:12:52 +01:00
parent 94165a0f3d
commit cbf2771935
3 changed files with 6 additions and 9 deletions

View file

@ -32,8 +32,7 @@ var verifyCMD = &cobra.Command{
userPassword := viper.GetString("userPassword") userPassword := viper.GetString("userPassword")
if userPassword == "" { if userPassword == "" {
fmt.Print("Enter Password:") pw, err := util.ReadPassword("Enter Password:")
pw, err := util.ReadPassword()
if err != nil { if err != nil {
fmt.Println() fmt.Println()
return fmt.Errorf("Reading Password: %w", err) return fmt.Errorf("Reading Password: %w", err)

View file

@ -53,8 +53,7 @@ func KeepassExport(cmd *cobra.Command, args []string) error {
cmd.SilenceUsage = true cmd.SilenceUsage = true
if keepassPassword == "" { if keepassPassword == "" {
fmt.Print("Enter Keepass Password:") pw, err := util.ReadPassword("Enter Keepass Password:")
pw, err := util.ReadPassword()
if err != nil { if err != nil {
fmt.Println() fmt.Println()
return fmt.Errorf("Reading Keepass Password: %w", err) return fmt.Errorf("Reading Keepass Password: %w", err)

View file

@ -17,11 +17,11 @@ import (
) )
// ReadPassword reads a Password interactively or via Pipe // ReadPassword reads a Password interactively or via Pipe
func ReadPassword() (string, error) { func ReadPassword(prompt string) (string, error) {
fd := int(os.Stdin.Fd()) fd := int(os.Stdin.Fd())
var pass string var pass string
if term.IsTerminal(fd) { if term.IsTerminal(fd) {
fmt.Print("Enter Password:") fmt.Print(prompt)
inputPass, err := term.ReadPassword(fd) inputPass, err := term.ReadPassword(fd)
if err != nil { if err != nil {
@ -54,7 +54,7 @@ func GetClient(ctx context.Context) (*api.Client, error) {
userPassword := viper.GetString("userPassword") userPassword := viper.GetString("userPassword")
if userPassword == "" { if userPassword == "" {
cliPassword, err := ReadPassword() cliPassword, err := ReadPassword("Enter Password:")
if err != nil { if err != nil {
fmt.Println() fmt.Println()
return nil, fmt.Errorf("Reading Password: %w", err) 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++ { for i := 0; i < 3; i++ {
var code string var code string
fmt.Print("Enter TOTP:") code, err := ReadPassword("Enter TOTP:")
code, err := ReadPassword()
if err != nil { if err != nil {
fmt.Printf("\n") fmt.Printf("\n")
return http.Cookie{}, fmt.Errorf("Reading TOTP: %w", err) return http.Cookie{}, fmt.Errorf("Reading TOTP: %w", err)