github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/unset_org_role_command.go (about) 1 package v7 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/sharedaction" 5 "code.cloudfoundry.org/cli/actor/v7action" 6 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant" 7 "code.cloudfoundry.org/cli/command" 8 "code.cloudfoundry.org/cli/command/translatableerror" 9 "code.cloudfoundry.org/clock" 10 11 "code.cloudfoundry.org/cli/command/flag" 12 "code.cloudfoundry.org/cli/command/v7/shared" 13 ) 14 15 //go:generate counterfeiter . UnsetOrgRoleActor 16 17 type UnsetOrgRoleActor interface { 18 DeleteOrgRole(roleType constant.RoleType, orgGUID string, userNameOrGUID string, userOrigin string, isClient bool) (v7action.Warnings, error) 19 GetOrganizationByName(name string) (v7action.Organization, v7action.Warnings, error) 20 GetUser(username, origin string) (v7action.User, error) 21 } 22 23 type UnsetOrgRoleCommand struct { 24 Args flag.OrgRoleArgs `positional-args:"yes"` 25 IsClient bool `long:"client" description:"Unassign an org role for a client-id of a (non-user) service account"` 26 Origin string `long:"origin" description:"Indicates the identity provider to be used for authentication"` 27 usage interface{} `usage:"CF_NAME unset-org-role USERNAME ORG ROLE\n CF_NAME unset-org-role USERNAME ORG ROLE [--client]\n CF_NAME unset-org-role USERNAME ORG ROLE [--origin ORIGIN]\n\nROLES:\n OrgManager - Invite and manage users, select and change plans, and set spending limits\n BillingManager - Create and manage the billing account and payment info\n OrgAuditor - Read-only access to org info and reports"` 28 relatedCommands interface{} `related_commands:"org-users, set-space-role"` 29 30 UI command.UI 31 Config command.Config 32 SharedActor command.SharedActor 33 Actor UnsetOrgRoleActor 34 } 35 36 func (cmd *UnsetOrgRoleCommand) Setup(config command.Config, ui command.UI) error { 37 cmd.UI = ui 38 cmd.Config = config 39 sharedActor := sharedaction.NewActor(config) 40 cmd.SharedActor = sharedActor 41 42 ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui, "") 43 if err != nil { 44 return err 45 } 46 cmd.Actor = v7action.NewActor(ccClient, config, sharedActor, uaaClient, clock.NewClock()) 47 return nil 48 } 49 50 func (cmd *UnsetOrgRoleCommand) Execute(args []string) error { 51 err := cmd.validateFlags() 52 if err != nil { 53 return err 54 } 55 56 err = cmd.SharedActor.CheckTarget(false, false) 57 if err != nil { 58 return err 59 } 60 61 currentUser, err := cmd.Config.CurrentUser() 62 if err != nil { 63 return err 64 } 65 66 cmd.UI.DisplayTextWithFlavor("Removing role {{.RoleType}} from user {{.TargetUserName}} in org {{.OrgName}} as {{.CurrentUserName}}...", map[string]interface{}{ 67 "RoleType": cmd.Args.Role.Role, 68 "TargetUserName": cmd.Args.Username, 69 "OrgName": cmd.Args.Organization, 70 "CurrentUserName": currentUser.Name, 71 }) 72 73 roleType, err := convertRoleType(cmd.Args.Role) 74 if err != nil { 75 return err 76 } 77 78 org, warnings, err := cmd.Actor.GetOrganizationByName(cmd.Args.Organization) 79 cmd.UI.DisplayWarnings(warnings) 80 if err != nil { 81 return err 82 } 83 84 origin := cmd.Origin 85 if origin == "" { 86 origin = constant.DefaultOriginUaa 87 } 88 89 warnings, err = cmd.Actor.DeleteOrgRole(roleType, org.GUID, cmd.Args.Username, origin, cmd.IsClient) 90 cmd.UI.DisplayWarnings(warnings) 91 if err != nil { 92 return err 93 } 94 95 cmd.UI.DisplayOK() 96 97 return nil 98 } 99 100 func (cmd UnsetOrgRoleCommand) validateFlags() error { 101 if cmd.IsClient && cmd.Origin != "" { 102 return translatableerror.ArgumentCombinationError{ 103 Args: []string{"--client", "--origin"}, 104 } 105 } 106 return nil 107 }