From e5c10e6fe074d556745751b2d7c530d7dffdb450 Mon Sep 17 00:00:00 2001 From: mkelvers Date: Mon, 27 Apr 2026 09:09:05 +0200 Subject: [PATCH] cli: prompt to overwrite password if user already exists --- cmd/server/main.go | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/cmd/server/main.go b/cmd/server/main.go index 271804d..d98414e 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -1,6 +1,7 @@ package main import ( + "bufio" "context" "database/sql" "fmt" @@ -9,6 +10,7 @@ import ( "os" "os/signal" "path/filepath" + "strings" "syscall" "time" @@ -42,6 +44,37 @@ func main() { } defer db.Close() + var existingID string + err = db.QueryRow("SELECT id FROM user WHERE username = ?", username).Scan(&existingID) + if err != nil && err != sql.ErrNoRows { + log.Fatalf("database error: %v", err) + } + + if err == nil { + fmt.Printf("User '%s' already exists. Do you want to overwrite their password? [y/N]: ", username) + reader := bufio.NewReader(os.Stdin) + response, _ := reader.ReadString('\n') + response = strings.TrimSpace(strings.ToLower(response)) + + if response != "y" && response != "yes" { + fmt.Println("Operation cancelled.") + return + } + + hash, err := bcrypt.GenerateFromPassword([]byte(password), 12) + if err != nil { + log.Fatalf("failed to hash password: %v", err) + } + + _, err = db.Exec("UPDATE user SET password_hash = ? WHERE id = ?", string(hash), existingID) + if err != nil { + log.Fatalf("failed to update user: %v", err) + } + + fmt.Printf("✅ Password for '%s' updated successfully!\n", username) + return + } + hash, err := bcrypt.GenerateFromPassword([]byte(password), 12) if err != nil { log.Fatalf("failed to hash password: %v", err) @@ -50,7 +83,7 @@ func main() { id := uuid.New().String() _, err = db.Exec("INSERT INTO user (id, username, password_hash) VALUES (?, ?, ?)", id, username, string(hash)) if err != nil { - log.Fatalf("failed to create user (might already exist): %v", err) + log.Fatalf("failed to create user: %v", err) } fmt.Printf("✅ Brugeren '%s' blev oprettet med succes!\n", username)