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  }