github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+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_registry"
     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/cloudfoundry/cli/flags"
    13  )
    14  
    15  type CreateUser struct {
    16  	ui       terminal.UI
    17  	config   core_config.Reader
    18  	userRepo api.UserRepository
    19  }
    20  
    21  func init() {
    22  	command_registry.Register(&CreateUser{})
    23  }
    24  
    25  func (cmd *CreateUser) MetaData() command_registry.CommandMetadata {
    26  	return command_registry.CommandMetadata{
    27  		Name:        "create-user",
    28  		Description: T("Create a new user"),
    29  		Usage:       T("CF_NAME create-user USERNAME PASSWORD"),
    30  	}
    31  }
    32  
    33  func (cmd *CreateUser) Requirements(requirementsFactory requirements.Factory, fc flags.FlagContext) (reqs []requirements.Requirement, err error) {
    34  	if len(fc.Args()) != 2 {
    35  		usage := command_registry.Commands.CommandUsage("create-user")
    36  		cmd.ui.Failed(T("Incorrect Usage. Requires arguments\n\n") + usage)
    37  	}
    38  
    39  	reqs = append(reqs, requirementsFactory.NewLoginRequirement())
    40  
    41  	return
    42  }
    43  
    44  func (cmd *CreateUser) SetDependency(deps command_registry.Dependency, pluginCall bool) command_registry.Command {
    45  	cmd.ui = deps.Ui
    46  	cmd.config = deps.Config
    47  	cmd.userRepo = deps.RepoLocator.GetUserRepository()
    48  	return cmd
    49  }
    50  
    51  func (cmd *CreateUser) Execute(c flags.FlagContext) {
    52  	username := c.Args()[0]
    53  	password := c.Args()[1]
    54  
    55  	cmd.ui.Say(T("Creating user {{.TargetUser}}...",
    56  		map[string]interface{}{
    57  			"TargetUser":  terminal.EntityNameColor(username),
    58  			"CurrentUser": terminal.EntityNameColor(cmd.config.Username()),
    59  		}))
    60  
    61  	err := cmd.userRepo.Create(username, password)
    62  	switch err.(type) {
    63  	case nil:
    64  	case *errors.ModelAlreadyExistsError:
    65  		cmd.ui.Warn("%s", err.Error())
    66  	default:
    67  		cmd.ui.Failed(T("Error creating user {{.TargetUser}}.\n{{.Error}}",
    68  			map[string]interface{}{
    69  				"TargetUser": terminal.EntityNameColor(username),
    70  				"Error":      err.Error(),
    71  			}))
    72  	}
    73  
    74  	cmd.ui.Ok()
    75  	cmd.ui.Say(T("\nTIP: Assign roles with '{{.CurrentUser}} set-org-role' and '{{.CurrentUser}} set-space-role'", map[string]interface{}{"CurrentUser": cf.Name()}))
    76  }