github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/space_users_command.go (about) 1 package v7 2 3 import ( 4 "github.com/LukasHeimann/cloudfoundrycli/v8/actor/v7action" 5 "github.com/LukasHeimann/cloudfoundrycli/v8/api/cloudcontroller/ccv3/constant" 6 "github.com/LukasHeimann/cloudfoundrycli/v8/command/flag" 7 "github.com/LukasHeimann/cloudfoundrycli/v8/resources" 8 ) 9 10 type SpaceUsersCommand struct { 11 BaseCommand 12 13 RequiredArgs flag.SpaceUsersArgs `positional-args:"yes"` 14 usage interface{} `usage:"CF_NAME space-users ORG SPACE"` 15 relatedCommands interface{} `related_commands:"org-users, orgs, set-space-role, spaces, unset-space-role"` 16 } 17 18 func (cmd *SpaceUsersCommand) Execute(args []string) error { 19 err := cmd.SharedActor.CheckTarget(false, false) 20 if err != nil { 21 return err 22 } 23 24 user, err := cmd.Actor.GetCurrentUser() 25 if err != nil { 26 return err 27 } 28 29 cmd.UI.DisplayTextWithFlavor("Getting users in org {{.Org}} / space {{.Space}} as {{.CurrentUser}}...", map[string]interface{}{ 30 "Org": cmd.RequiredArgs.Organization, 31 "Space": cmd.RequiredArgs.Space, 32 "CurrentUser": user.Name, 33 }) 34 cmd.UI.DisplayNewline() 35 36 org, warnings, err := cmd.Actor.GetOrganizationByName(cmd.RequiredArgs.Organization) 37 cmd.UI.DisplayWarnings(warnings) 38 if err != nil { 39 return err 40 } 41 space, warnings, err := cmd.Actor.GetSpaceByNameAndOrganization(cmd.RequiredArgs.Space, org.GUID) 42 cmd.UI.DisplayWarnings(warnings) 43 if err != nil { 44 return err 45 } 46 47 spaceUsersByRoleType, warnings, err := cmd.Actor.GetSpaceUsersByRoleType(space.GUID) 48 cmd.UI.DisplayWarnings(warnings) 49 if err != nil { 50 return err 51 } 52 53 cmd.displaySpaceUsers(spaceUsersByRoleType) 54 55 return nil 56 } 57 58 func (cmd SpaceUsersCommand) displaySpaceUsers(orgUsersByRoleType map[constant.RoleType][]resources.User) { 59 cmd.displayRoleGroup(orgUsersByRoleType[constant.SpaceManagerRole], "SPACE MANAGER") 60 cmd.displayRoleGroup(orgUsersByRoleType[constant.SpaceDeveloperRole], "SPACE DEVELOPER") 61 cmd.displayRoleGroup(orgUsersByRoleType[constant.SpaceSupporterRole], "SPACE SUPPORTER") 62 cmd.displayRoleGroup(orgUsersByRoleType[constant.SpaceAuditorRole], "SPACE AUDITOR") 63 } 64 65 func (cmd SpaceUsersCommand) displayRoleGroup(usersWithRole []resources.User, roleLabel string) { 66 v7action.SortUsers(usersWithRole) 67 68 cmd.UI.DisplayHeader(roleLabel) 69 if len(usersWithRole) > 0 { 70 for _, userWithRole := range usersWithRole { 71 cmd.UI.DisplayText(" {{.PresentationName}} ({{.Origin}})", map[string]interface{}{ 72 "PresentationName": userWithRole.PresentationName, 73 "Origin": v7action.GetHumanReadableOrigin(userWithRole), 74 }) 75 } 76 } else { 77 cmd.UI.DisplayText(" No {{.RoleLabel}} found", map[string]interface{}{ 78 "RoleLabel": roleLabel, 79 }) 80 } 81 82 cmd.UI.DisplayNewline() 83 }