github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v7/delete_user_command.go (about) 1 package v7 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/actor/sharedaction" 6 "code.cloudfoundry.org/cli/actor/v7action" 7 "code.cloudfoundry.org/cli/command" 8 "code.cloudfoundry.org/cli/command/flag" 9 "code.cloudfoundry.org/cli/command/v7/shared" 10 "code.cloudfoundry.org/clock" 11 ) 12 13 //go:generate counterfeiter . DeleteUserActor 14 15 type DeleteUserActor interface { 16 DeleteUser(userGuid string) (v7action.Warnings, error) 17 GetUser(username, origin string) (v7action.User, error) 18 } 19 20 type DeleteUserCommand struct { 21 RequiredArgs flag.Username `positional-args:"yes"` 22 Force bool `short:"f" description:"Prompt interactively for password"` 23 Origin string `long:"origin" description:"Origin for mapping a user account to a user in an external identity provider"` 24 usage interface{} `usage:"CF_NAME delete-user USERNAME [-f]\n CF_NAME delete-user USERNAME [--origin ORIGIN]\n\nEXAMPLES:\n cf delete-user jsmith # internal user\n cf delete-user jsmith --origin ldap # LDAP user"` 25 relatedCommands interface{} `related_commands:"org-users"` 26 27 UI command.UI 28 Config command.Config 29 SharedActor command.SharedActor 30 Actor DeleteUserActor 31 } 32 33 func (cmd *DeleteUserCommand) Setup(config command.Config, ui command.UI) error { 34 cmd.UI = ui 35 cmd.Config = config 36 sharedActor := sharedaction.NewActor(config) 37 cmd.SharedActor = sharedActor 38 39 ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui, "") 40 if err != nil { 41 return err 42 } 43 cmd.Actor = v7action.NewActor(ccClient, config, sharedActor, uaaClient, clock.NewClock()) 44 return nil 45 } 46 47 func (cmd *DeleteUserCommand) Execute(args []string) error { 48 err := cmd.SharedActor.CheckTarget(false, false) 49 if err != nil { 50 return err 51 } 52 53 if !cmd.Force { 54 promptMessage := "Really delete the user {{.TargetUser}}?" 55 deleteUser, promptErr := cmd.UI.DisplayBoolPrompt(false, promptMessage, map[string]interface{}{"TargetUser": cmd.RequiredArgs.Username}) 56 if promptErr != nil { 57 return nil 58 } 59 60 if !deleteUser { 61 cmd.UI.DisplayText("User '{{.TargetUser}}' has not been deleted.", map[string]interface{}{ 62 "TargetUser": cmd.RequiredArgs.Username, 63 }) 64 cmd.UI.DisplayOK() 65 return nil 66 } 67 } 68 69 currentUser, err := cmd.Config.CurrentUserName() 70 if err != nil { 71 return err 72 } 73 74 cmd.UI.DisplayTextWithFlavor("Deleting user {{.TargetUser}} as {{.CurrentUser}}...", map[string]interface{}{ 75 "TargetUser": cmd.RequiredArgs.Username, 76 "CurrentUser": currentUser, 77 }) 78 79 user, err := cmd.Actor.GetUser(cmd.RequiredArgs.Username, cmd.Origin) 80 if err != nil { 81 // User never existed 82 if _, ok := err.(actionerror.UserNotFoundError); ok { 83 cmd.UI.DisplayTextWithFlavor(err.Error()) 84 cmd.UI.DisplayOK() 85 return nil 86 } 87 return err 88 } 89 90 warnings, err := cmd.Actor.DeleteUser(user.GUID) 91 92 if err != nil { 93 return err 94 } 95 96 cmd.UI.DisplayWarnings(warnings) 97 cmd.UI.DisplayOK() 98 99 return nil 100 }