github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v7/unset_space_role_command.go (about) 1 package v7 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/v7action" 5 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant" 6 "code.cloudfoundry.org/cli/command/translatableerror" 7 "code.cloudfoundry.org/clock" 8 9 "code.cloudfoundry.org/cli/actor/sharedaction" 10 "code.cloudfoundry.org/cli/command" 11 "code.cloudfoundry.org/cli/command/flag" 12 "code.cloudfoundry.org/cli/command/v7/shared" 13 ) 14 15 //go:generate counterfeiter . UnsetSpaceRoleActor 16 17 type UnsetSpaceRoleActor interface { 18 DeleteSpaceRole(roleType constant.RoleType, spaceGUID string, userNameOrGUID string, userOrigin string, isClient bool) (v7action.Warnings, error) 19 GetOrganizationByName(name string) (v7action.Organization, v7action.Warnings, error) 20 GetSpaceByNameAndOrganization(spaceName string, orgGUID string) (v7action.Space, v7action.Warnings, error) 21 GetUser(username, origin string) (v7action.User, error) 22 } 23 24 type UnsetSpaceRoleCommand struct { 25 Args flag.SpaceRoleArgs `positional-args:"yes"` 26 IsClient bool `long:"client" description:"Remove space role from a client-id of a (non-user) service account"` 27 Origin string `long:"origin" description:"Indicates the identity provider to be used for authentication"` 28 usage interface{} `usage:"CF_NAME unset-space-role USERNAME ORG SPACE ROLE\n CF_NAME unset-space-role USERNAME ORG SPACE ROLE [--client]\n CF_NAME unset-space-role USERNAME ORG SPACE ROLE [--origin ORIGIN]\n\nROLES:\n SpaceManager - Invite and manage users, and enable features for a given space\n SpaceDeveloper - Create and manage apps and services, and see logs and reports\n SpaceAuditor - View logs, reports, and settings on this space"` 29 relatedCommands interface{} `related_commands:"set-space-role, space-users"` 30 31 UI command.UI 32 Config command.Config 33 SharedActor command.SharedActor 34 Actor UnsetSpaceRoleActor 35 } 36 37 func (cmd *UnsetSpaceRoleCommand) Setup(config command.Config, ui command.UI) error { 38 cmd.UI = ui 39 cmd.Config = config 40 sharedActor := sharedaction.NewActor(config) 41 cmd.SharedActor = sharedActor 42 43 ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui, "") 44 if err != nil { 45 return err 46 } 47 cmd.Actor = v7action.NewActor(ccClient, config, sharedActor, uaaClient, clock.NewClock()) 48 return nil 49 } 50 51 func (cmd *UnsetSpaceRoleCommand) Execute(args []string) error { 52 err := cmd.validateFlags() 53 if err != nil { 54 return err 55 } 56 57 err = cmd.SharedActor.CheckTarget(false, false) 58 if err != nil { 59 return err 60 } 61 62 currentUser, err := cmd.Config.CurrentUser() 63 if err != nil { 64 return err 65 } 66 67 cmd.UI.DisplayTextWithFlavor("Removing role {{.RoleType}} from user {{.TargetUserName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.CurrentUserName}}...", map[string]interface{}{ 68 "RoleType": cmd.Args.Role.Role, 69 "TargetUserName": cmd.Args.Username, 70 "OrgName": cmd.Args.Organization, 71 "SpaceName": cmd.Args.Space, 72 "CurrentUserName": currentUser.Name, 73 }) 74 75 roleType, err := convertSpaceRoleType(cmd.Args.Role) 76 if err != nil { 77 return err 78 } 79 80 org, warnings, err := cmd.Actor.GetOrganizationByName(cmd.Args.Organization) 81 cmd.UI.DisplayWarnings(warnings) 82 if err != nil { 83 return err 84 } 85 86 space, warnings, err := cmd.Actor.GetSpaceByNameAndOrganization(cmd.Args.Space, org.GUID) 87 cmd.UI.DisplayWarnings(warnings) 88 if err != nil { 89 return err 90 } 91 92 origin := cmd.Origin 93 if origin == "" { 94 origin = constant.DefaultOriginUaa 95 } 96 97 warnings, err = cmd.Actor.DeleteSpaceRole(roleType, space.GUID, cmd.Args.Username, origin, cmd.IsClient) 98 cmd.UI.DisplayWarnings(warnings) 99 if err != nil { 100 return err 101 } 102 103 cmd.UI.DisplayOK() 104 105 return nil 106 } 107 108 func (cmd UnsetSpaceRoleCommand) validateFlags() error { 109 if cmd.IsClient && cmd.Origin != "" { 110 return translatableerror.ArgumentCombinationError{ 111 Args: []string{"--client", "--origin"}, 112 } 113 } 114 return nil 115 }