package changepassword import ( "errors" "fmt" "log" "os" "strings" "github.com/manifoldco/promptui" "github.com/urfave/cli/v2" "gitnet.fr/deblan/budget/database/manager" "gitnet.fr/deblan/budget/database/model" ) type promptContent struct { errorMsg string label string } func promptGetInput(pc promptContent) string { validate := func(input string) error { if len(input) <= 0 { return errors.New(pc.errorMsg) } return nil } templates := &promptui.PromptTemplates{ Prompt: "{{ . }} ", Valid: "{{ . | green }} ", Invalid: "{{ . | red }} ", Success: "{{ . | bold }} ", } prompt := promptui.Prompt{ Label: pc.label, Templates: templates, Validate: validate, } result, err := prompt.Run() if err != nil { log.Fatal(err) os.Exit(1) } return strings.TrimSpace(result) } func Command(cCtx *cli.Context) error { username := promptGetInput(promptContent{ "Please provide a username.", "Username:", }) var count int64 db := manager.Get() db.Db.Model(model.User{}).Where("username = ?", username).Count(&count) if count == 0 { fmt.Printf("User does not exist!\n") os.Exit(1) } password := promptGetInput(promptContent{ "Please provide a password.", "Password:", }) var user model.User db.Db.Model(model.User{}).Where("username = ?", username).Find(&user) user.UpdatePassword(password) db.Db.Save(user) return nil }