github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/user/create_user.go (about)

     1  package user
     2  
     3  import (
     4  	"github.com/cloudfoundry/cli/cf"
     5  	"github.com/cloudfoundry/cli/cf/api"
     6  	"github.com/cloudfoundry/cli/cf/command_metadata"
     7  	"github.com/cloudfoundry/cli/cf/configuration/core_config"
     8  	"github.com/cloudfoundry/cli/cf/errors"
     9  	. "github.com/cloudfoundry/cli/cf/i18n"
    10  	"github.com/cloudfoundry/cli/cf/requirements"
    11  	"github.com/cloudfoundry/cli/cf/terminal"
    12  	"github.com/codegangsta/cli"
    13  )
    14  
    15  type CreateUser struct {
    16  	ui       terminal.UI
    17  	config   core_config.Reader
    18  	userRepo api.UserRepository
    19  }
    20  
    21  func NewCreateUser(ui terminal.UI, config core_config.Reader, userRepo api.UserRepository) (cmd CreateUser) {
    22  	cmd.ui = ui
    23  	cmd.config = config
    24  	cmd.userRepo = userRepo
    25  	return
    26  }
    27  
    28  func (cmd CreateUser) Metadata() command_metadata.CommandMetadata {
    29  	return command_metadata.CommandMetadata{
    30  		Name:        "create-user",
    31  		Description: T("Create a new user"),
    32  		Usage:       T("CF_NAME create-user USERNAME PASSWORD"),
    33  	}
    34  }
    35  
    36  func (cmd CreateUser) GetRequirements(requirementsFactory requirements.Factory, c *cli.Context) (reqs []requirements.Requirement, err error) {
    37  	if len(c.Args()) != 2 {
    38  		cmd.ui.FailWithUsage(c)
    39  	}
    40  
    41  	reqs = append(reqs, requirementsFactory.NewLoginRequirement())
    42  
    43  	return
    44  }
    45  
    46  func (cmd CreateUser) Run(c *cli.Context) {
    47  	username := c.Args()[0]
    48  	password := c.Args()[1]
    49  
    50  	cmd.ui.Say(T("Creating user {{.TargetUser}} as {{.CurrentUser}}...",
    51  		map[string]interface{}{
    52  			"TargetUser":  terminal.EntityNameColor(username),
    53  			"CurrentUser": terminal.EntityNameColor(cmd.config.Username()),
    54  		}))
    55  
    56  	err := cmd.userRepo.Create(username, password)
    57  	switch err.(type) {
    58  	case nil:
    59  	case *errors.ModelAlreadyExistsError:
    60  		cmd.ui.Warn("%s", err.Error())
    61  	default:
    62  		cmd.ui.Failed(T("Error creating user {{.TargetUser}}.\n{{.Error}}",
    63  			map[string]interface{}{
    64  				"TargetUser": terminal.EntityNameColor(username),
    65  				"Error":      err.Error(),
    66  			}))
    67  	}
    68  
    69  	cmd.ui.Ok()
    70  	cmd.ui.Say(T("\nTIP: Assign roles with '{{.CurrentUser}} set-org-role' and '{{.CurrentUser}} set-space-role'", map[string]interface{}{"CurrentUser": cf.Name()}))
    71  }