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