github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/user/set_org_role.go (about) 1 package user 2 3 import ( 4 "github.com/cloudfoundry/cli/cf/api" 5 "github.com/cloudfoundry/cli/cf/command_metadata" 6 "github.com/cloudfoundry/cli/cf/configuration/core_config" 7 . "github.com/cloudfoundry/cli/cf/i18n" 8 "github.com/cloudfoundry/cli/cf/models" 9 "github.com/cloudfoundry/cli/cf/requirements" 10 "github.com/cloudfoundry/cli/cf/terminal" 11 "github.com/codegangsta/cli" 12 ) 13 14 type SetOrgRole struct { 15 ui terminal.UI 16 config core_config.Reader 17 userRepo api.UserRepository 18 userReq requirements.UserRequirement 19 orgReq requirements.OrganizationRequirement 20 } 21 22 func NewSetOrgRole(ui terminal.UI, config core_config.Reader, userRepo api.UserRepository) (cmd *SetOrgRole) { 23 cmd = new(SetOrgRole) 24 cmd.ui = ui 25 cmd.config = config 26 cmd.userRepo = userRepo 27 return 28 } 29 30 func (cmd *SetOrgRole) Metadata() command_metadata.CommandMetadata { 31 return command_metadata.CommandMetadata{ 32 Name: "set-org-role", 33 Description: T("Assign an org role to a user"), 34 Usage: T("CF_NAME set-org-role USERNAME ORG ROLE\n\n") + 35 T("ROLES:\n") + 36 T(" OrgManager - Invite and manage users, select and change plans, and set spending limits\n") + 37 T(" BillingManager - Create and manage the billing account and payment info\n") + 38 T(" OrgAuditor - Read-only access to org info and reports\n"), 39 } 40 } 41 42 func (cmd *SetOrgRole) GetRequirements(requirementsFactory requirements.Factory, c *cli.Context) (reqs []requirements.Requirement, err error) { 43 if len(c.Args()) != 3 { 44 cmd.ui.FailWithUsage(c) 45 } 46 47 cmd.userReq = requirementsFactory.NewUserRequirement(c.Args()[0]) 48 cmd.orgReq = requirementsFactory.NewOrganizationRequirement(c.Args()[1]) 49 50 reqs = []requirements.Requirement{ 51 requirementsFactory.NewLoginRequirement(), 52 cmd.userReq, 53 cmd.orgReq, 54 } 55 56 return 57 } 58 59 func (cmd *SetOrgRole) Run(c *cli.Context) { 60 user := cmd.userReq.GetUser() 61 org := cmd.orgReq.GetOrganization() 62 role := models.UserInputToOrgRole[c.Args()[2]] 63 64 cmd.ui.Say(T("Assigning role {{.Role}} to user {{.TargetUser}} in org {{.TargetOrg}} as {{.CurrentUser}}...", 65 map[string]interface{}{ 66 "Role": terminal.EntityNameColor(role), 67 "TargetUser": terminal.EntityNameColor(user.Username), 68 "TargetOrg": terminal.EntityNameColor(org.Name), 69 "CurrentUser": terminal.EntityNameColor(cmd.config.Username()), 70 })) 71 72 apiErr := cmd.userRepo.SetOrgRole(user.Guid, org.Guid, role) 73 if apiErr != nil { 74 cmd.ui.Failed(apiErr.Error()) 75 return 76 } 77 78 cmd.ui.Ok() 79 }