Add change-password admin command (#1304)

* Add change-password admin command
release/v1.15
Sandro Santilli 2017-03-20 09:23:38 +01:00 committed by Kim "BKC" Carlbäcker
parent 97ee88975a
commit e1586898b2
1 changed files with 52 additions and 0 deletions

View File

@ -23,6 +23,7 @@ var (
to make automatic initialization process more smoothly`, to make automatic initialization process more smoothly`,
Subcommands: []cli.Command{ Subcommands: []cli.Command{
subcmdCreateUser, subcmdCreateUser,
subcmdChangePassword,
}, },
} }
@ -57,8 +58,59 @@ to make automatic initialization process more smoothly`,
}, },
}, },
} }
subcmdChangePassword = cli.Command{
Name: "change-password",
Usage: "Change a user's password",
Action: runChangePassword,
Flags: []cli.Flag{
cli.StringFlag{
Name: "username,u",
Value: "",
Usage: "The user to change password for",
},
cli.StringFlag{
Name: "password,p",
Value: "",
Usage: "New password to set for user",
},
},
}
) )
func runChangePassword(c *cli.Context) error {
if !c.IsSet("password") {
return fmt.Errorf("Password is not specified")
} else if !c.IsSet("username") {
return fmt.Errorf("Username is not specified")
}
setting.NewContext()
models.LoadConfigs()
setting.NewXORMLogService(false)
if err := models.SetEngine(); err != nil {
return fmt.Errorf("models.SetEngine: %v", err)
}
uname := c.String("username")
user, err := models.GetUserByName(uname)
if err != nil {
return fmt.Errorf("%v", err)
}
user.Passwd = c.String("password")
if user.Salt, err = models.GetUserSalt(); err != nil {
return fmt.Errorf("%v", err)
}
user.EncodePasswd()
if err := models.UpdateUser(user); err != nil {
return fmt.Errorf("%v", err)
}
fmt.Printf("User '%s' password has been successfully updated!\n", uname)
return nil
}
func runCreateUser(c *cli.Context) error { func runCreateUser(c *cli.Context) error {
if !c.IsSet("name") { if !c.IsSet("name") {
return fmt.Errorf("Username is not specified") return fmt.Errorf("Username is not specified")