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 }