Select Git revision
userSetCaps.go
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
}
}