Skip to content
Snippets Groups Projects
Select Git revision
  • 238d11db14b4d5949afd163bc4dc05bfb652e477
  • live_exam_os_ubuntu default protected
2 results

userSetCaps.go

Blame
  • userSetCaps.go 1.56 KiB
    package cmdUser
    
    import (
    	u "nexus-client/utils"
    	g "nexus-client/globals"
    )
    
    type SetCaps struct {
        Name string
    }
    
    func (cmd *SetCaps)GetName() string {
    	return cmd.Name
    }
     
    func (cmd *SetCaps)GetDesc() []string {
    	return []string{
    		"Sets a user's capabilities.",
    		"Requires USER_SET_CAPS user capability."}
    }
    
    func (cmd *SetCaps)PrintUsage() {
    	for _, desc := range cmd.GetDesc() {
    		u.PrintlnErr(desc)
    	}
    	u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
    	u.PrintlnErr("USAGE: "+cmd.Name+" email [capability ...]")
    	u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――")
    }
    
    func (cmd *SetCaps)Run(args []string) int {
    	client := g.GetInstance().Client
    	host := g.GetInstance().Host
    
    	argc := len(args)
    	if argc < 1 {
    		cmd.PrintUsage()
    		return 1
    	}
    
    	email := args[0]
    
    	type CapsArgs struct {
    		Caps map[string]int `json:"caps"  validate:"required"`
    	}
    	
    	capsArgs := &CapsArgs { make(map[string]int) }
    	for _, cap := range args[1:] {
    		capsArgs.Caps[cap] = 1
    	}
    
    	resp, err := client.R().SetBody(capsArgs).Put(host+"/users/"+email+"/caps")
    	if err != nil {
    		u.PrintlnErr("Error: "+err.Error())
    		return 1
    	}
    
    	if resp.IsSuccess() {
    		u.Println(resp)
    		return 0
    	} else {
    		u.PrintlnErr("Error: "+resp.Status()+": "+resp.String())
    		return 1
    	}
    }