github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/user/org_users.go (about) 1 package user 2 3 import ( 4 "errors" 5 "github.com/cloudfoundry/cli/cf/api" 6 "github.com/cloudfoundry/cli/cf/command_metadata" 7 "github.com/cloudfoundry/cli/cf/configuration/core_config" 8 . "github.com/cloudfoundry/cli/cf/i18n" 9 "github.com/cloudfoundry/cli/cf/models" 10 "github.com/cloudfoundry/cli/cf/requirements" 11 "github.com/cloudfoundry/cli/cf/terminal" 12 "github.com/codegangsta/cli" 13 ) 14 15 var orgRoles = []string{models.ORG_MANAGER, models.BILLING_MANAGER, models.ORG_AUDITOR} 16 17 type OrgUsers struct { 18 ui terminal.UI 19 config core_config.Reader 20 orgReq requirements.OrganizationRequirement 21 userRepo api.UserRepository 22 } 23 24 func NewOrgUsers(ui terminal.UI, config core_config.Reader, userRepo api.UserRepository) (cmd *OrgUsers) { 25 cmd = new(OrgUsers) 26 cmd.ui = ui 27 cmd.config = config 28 cmd.userRepo = userRepo 29 return 30 } 31 32 func (cmd *OrgUsers) Metadata() command_metadata.CommandMetadata { 33 return command_metadata.CommandMetadata{ 34 Name: "org-users", 35 Description: T("Show org users by role"), 36 Usage: T("CF_NAME org-users ORG"), 37 Flags: []cli.Flag{ 38 cli.BoolFlag{Name: "a", Usage: T("List all users in the org")}, 39 }, 40 } 41 } 42 43 func (cmd *OrgUsers) GetRequirements(requirementsFactory requirements.Factory, c *cli.Context) (reqs []requirements.Requirement, err error) { 44 if len(c.Args()) != 1 { 45 err = errors.New(T("Incorrect usage")) 46 cmd.ui.FailWithUsage(c) 47 return 48 } 49 50 orgName := c.Args()[0] 51 cmd.orgReq = requirementsFactory.NewOrganizationRequirement(orgName) 52 reqs = append(reqs, requirementsFactory.NewLoginRequirement(), cmd.orgReq) 53 54 return 55 } 56 57 func (cmd *OrgUsers) Run(c *cli.Context) { 58 org := cmd.orgReq.GetOrganization() 59 all := c.Bool("a") 60 61 cmd.ui.Say(T("Getting users in org {{.TargetOrg}} as {{.CurrentUser}}...", 62 map[string]interface{}{ 63 "TargetOrg": terminal.EntityNameColor(org.Name), 64 "CurrentUser": terminal.EntityNameColor(cmd.config.Username()), 65 })) 66 67 roles := orgRoles 68 if all { 69 roles = []string{models.ORG_USER} 70 } 71 72 var orgRoleToDisplayName = map[string]string{ 73 models.ORG_USER: T("USERS"), 74 models.ORG_MANAGER: T("ORG MANAGER"), 75 models.BILLING_MANAGER: T("BILLING MANAGER"), 76 models.ORG_AUDITOR: T("ORG AUDITOR"), 77 } 78 79 for _, role := range roles { 80 displayName := orgRoleToDisplayName[role] 81 82 users, apiErr := cmd.userRepo.ListUsersInOrgForRole(org.Guid, role) 83 84 cmd.ui.Say("") 85 cmd.ui.Say("%s", terminal.HeaderColor(displayName)) 86 87 for _, user := range users { 88 cmd.ui.Say(" %s", user.Username) 89 } 90 91 if apiErr != nil { 92 cmd.ui.Failed(T("Failed fetching org-users for role {{.OrgRoleToDisplayName}}.\n{{.Error}}", 93 map[string]interface{}{ 94 "Error": apiErr.Error(), 95 "OrgRoleToDisplayName": displayName, 96 })) 97 return 98 } 99 } 100 }