Changeset 251 in code for trunk/cmd/sojuctl/main.go


Ignore:
Timestamp:
Apr 10, 2020, 8:09:02 AM (5 years ago)
Author:
admin
Message:

Add ability to change password

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/cmd/sojuctl/main.go

    r98 r251  
    1515const usage = `usage: sojuctl [-config path] <action> [options...]
    1616
    17   create-user <username>  Create a new user
    18   help                    Show this help message
     17  create-user <username>        Create a new user
     18  change-password <username>    Change password for a user
     19  help                          Show this help message
    1920`
    2021
     
    7374                        log.Fatalf("failed to create user: %v", err)
    7475                }
     76        case "change-password":
     77                username := flag.Arg(1)
     78                if username == "" {
     79                        flag.Usage()
     80                        os.Exit(1)
     81                }
     82
     83                fmt.Printf("New password: ")
     84                password, err := terminal.ReadPassword(int(os.Stdin.Fd()))
     85                if err != nil {
     86                        log.Fatalf("failed to read new password: %v", err)
     87                }
     88                fmt.Printf("\n")
     89
     90                hashed, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)
     91                if err != nil {
     92                        log.Fatalf("failed to hash password: %v", err)
     93                }
     94
     95                user := soju.User{
     96                        Username: username,
     97                        Password: string(hashed),
     98                }
     99                if err := db.UpdatePassword(&user); err != nil {
     100                        log.Fatalf("failed to update password: %v", err)
     101                }
     102
    75103        default:
    76104                flag.Usage()
Note: See TracChangeset for help on using the changeset viewer.