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

userAdd.go

Blame
  • userAdd.go 1.22 KiB
    package cmdUser
    
    import (
    	u "nexus-client/utils"
    	g "nexus-client/globals"
    )
    
    type Add struct {
        Name string
    }
    
    func (cmd *Add)GetName() string {
    	return cmd.Name
    }
     
    func (cmd *Add)GetDesc() []string {
    	return []string{
    		"Adds a user.",
    		"Requires USER_CREATE user capability."}
    }
    
    func (cmd *Add)PrintUsage() {
    	for _, desc := range cmd.GetDesc() {
    		u.PrintlnErr(desc)
    	}
    	u.PrintlnErr("USAGE: "+cmd.Name+" email firstname lastname password [capability ...]")
    }
    
    func (cmd *Add)Run(args []string) int {
    	client := g.GetInstance().Client
    	host := g.GetInstance().Host
    
    	argc := len(args)
    	if argc < 4 {
    		cmd.PrintUsage()
    		return 1
    	}
    
    	type UserArgs struct {
    		Email string
    		FirstName string
    		LastName string
    		Pwd string
    		Caps map[string]int
    	}
    		
    	userArgs := &UserArgs {
    		Email: args[0],
    		FirstName: args[1],
    		LastName: args[2],
    		Pwd: args[3],
    		Caps: make(map[string]int),
    	}
    
    	if argc > 4 {
    		for _, cap := range args[4:] {
    			userArgs.Caps[cap] = 1
    		}
    	}
    
    	resp, err := client.R().SetBody(userArgs).Post(host+"/users")
    	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
    	}
    }