Select Git revision
userUpdatePwd.go
userUpdatePwd.go 2.14 KiB
package cmdUser
import (
"nexus-common/params"
u "nexus-client/utils"
g "nexus-client/globals"
)
import (
"bytes"
"golang.org/x/crypto/ssh/terminal"
)
type UpdatePwd struct {
Name string
}
func (cmd *UpdatePwd)GetName() string {
return cmd.Name
}
func (cmd *UpdatePwd)GetDesc() []string {
return []string{
"Updates the current user's password."}
}
func (cmd *UpdatePwd)PrintUsage() {
for _, desc := range cmd.GetDesc() {
u.PrintlnErr(desc)
}
u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
u.PrintlnErr("USAGE: "+cmd.GetName())
u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
}
func (cmd *UpdatePwd)Run(args []string) int {
client := g.GetInstance().Client
host := g.GetInstance().Host
argc := len(args)
if argc != 0 {
cmd.PrintUsage()
return 1
}
// Read the new password from stdin
u.Print("New password: ")
newPwd, err := terminal.ReadPassword(0)
if err != nil {
u.PrintlnErr("Error: "+err.Error())
return 1
}
u.Print("\nRetype new password: ")
newPwd2, err := terminal.ReadPassword(0)
if err != nil {
u.PrintlnErr("Error: "+err.Error())
return 1
}
u.Println("")
if !bytes.Equal(newPwd, newPwd2) {
u.PrintlnErr("Sorry, passwords do not match!")
u.PrintlnErr("Password unchanged.")
return 1
}
pwdStr := string(newPwd)
p := ¶ms.UserSetPwd{pwdStr}
resp, err := client.R().SetBody(p).Put(host+"/users/pwd")
if err != nil {
u.PrintlnErr("Error: "+err.Error())
return 1
} else {
if resp.IsSuccess() {
u.Println(resp)
return 0
} else {
u.PrintlnErr("Error: "+resp.Status()+": "+resp.String())
return 1
}
}
}