github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/user/delete_user.go (about) 1 package user 2 3 import ( 4 "github.com/cloudfoundry/cli/cf/api" 5 "github.com/cloudfoundry/cli/cf/command_metadata" 6 "github.com/cloudfoundry/cli/cf/configuration/core_config" 7 "github.com/cloudfoundry/cli/cf/errors" 8 . "github.com/cloudfoundry/cli/cf/i18n" 9 "github.com/cloudfoundry/cli/cf/requirements" 10 "github.com/cloudfoundry/cli/cf/terminal" 11 "github.com/codegangsta/cli" 12 ) 13 14 type DeleteUser struct { 15 ui terminal.UI 16 config core_config.Reader 17 userRepo api.UserRepository 18 } 19 20 func NewDeleteUser(ui terminal.UI, config core_config.Reader, userRepo api.UserRepository) (cmd DeleteUser) { 21 cmd.ui = ui 22 cmd.config = config 23 cmd.userRepo = userRepo 24 return 25 } 26 27 func (cmd DeleteUser) Metadata() command_metadata.CommandMetadata { 28 return command_metadata.CommandMetadata{ 29 Name: "delete-user", 30 Description: T("Delete a user"), 31 Usage: T("CF_NAME delete-user USERNAME [-f]"), 32 Flags: []cli.Flag{ 33 cli.BoolFlag{Name: "f", Usage: T("Force deletion without confirmation")}, 34 }, 35 } 36 } 37 38 func (cmd DeleteUser) GetRequirements(requirementsFactory requirements.Factory, c *cli.Context) (reqs []requirements.Requirement, err error) { 39 if len(c.Args()) != 1 { 40 err = errors.New(T("Invalid usage")) 41 cmd.ui.FailWithUsage(c) 42 return 43 } 44 45 reqs = append(reqs, requirementsFactory.NewLoginRequirement()) 46 47 return 48 } 49 50 func (cmd DeleteUser) Run(c *cli.Context) { 51 username := c.Args()[0] 52 force := c.Bool("f") 53 54 if !force && !cmd.ui.ConfirmDelete(T("user"), username) { 55 return 56 } 57 58 cmd.ui.Say(T("Deleting user {{.TargetUser}} as {{.CurrentUser}}...", 59 map[string]interface{}{ 60 "TargetUser": terminal.EntityNameColor(username), 61 "CurrentUser": terminal.EntityNameColor(cmd.config.Username()), 62 })) 63 64 user, apiErr := cmd.userRepo.FindByUsername(username) 65 switch apiErr.(type) { 66 case nil: 67 case *errors.ModelNotFoundError: 68 cmd.ui.Ok() 69 cmd.ui.Warn(T("User {{.TargetUser}} does not exist.", map[string]interface{}{"TargetUser": username})) 70 return 71 default: 72 cmd.ui.Failed(apiErr.Error()) 73 return 74 } 75 76 apiErr = cmd.userRepo.Delete(user.Guid) 77 if apiErr != nil { 78 cmd.ui.Failed(apiErr.Error()) 79 return 80 } 81 82 cmd.ui.Ok() 83 }