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 }