Skip to content
Snippets Groups Projects
Select Git revision
  • 6c54feaea27cbf79ae52a8fbfaf50a34a299281c
  • live_exam_os_ubuntu default protected
2 results

userUpdatePwd.go

Blame
  • 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 := &params.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
            }
        }
    }