github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/user/unset_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 UnsetOrgRole 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 NewUnsetOrgRole(ui terminal.UI, config core_config.Reader, userRepo api.UserRepository) (cmd *UnsetOrgRole) {
    23  	cmd = new(UnsetOrgRole)
    24  	cmd.ui = ui
    25  	cmd.config = config
    26  	cmd.userRepo = userRepo
    27  
    28  	return
    29  }
    30  
    31  func (cmd *UnsetOrgRole) Metadata() command_metadata.CommandMetadata {
    32  	return command_metadata.CommandMetadata{
    33  		Name:        "unset-org-role",
    34  		Description: T("Remove an org role from a user"),
    35  		Usage: T("CF_NAME unset-org-role USERNAME ORG ROLE\n\n") +
    36  			T("ROLES:\n") +
    37  			T("   OrgManager - Invite and manage users, select and change plans, and set spending limits\n") +
    38  			T("   BillingManager - Create and manage the billing account and payment info\n") +
    39  			T("   OrgAuditor - Read-only access to org info and reports\n"),
    40  	}
    41  }
    42  
    43  func (cmd *UnsetOrgRole) GetRequirements(requirementsFactory requirements.Factory, c *cli.Context) (reqs []requirements.Requirement, err error) {
    44  	if len(c.Args()) != 3 {
    45  		cmd.ui.FailWithUsage(c)
    46  	}
    47  
    48  	cmd.userReq = requirementsFactory.NewUserRequirement(c.Args()[0])
    49  	cmd.orgReq = requirementsFactory.NewOrganizationRequirement(c.Args()[1])
    50  
    51  	reqs = []requirements.Requirement{
    52  		requirementsFactory.NewLoginRequirement(),
    53  		cmd.userReq,
    54  		cmd.orgReq,
    55  	}
    56  
    57  	return
    58  }
    59  
    60  func (cmd *UnsetOrgRole) Run(c *cli.Context) {
    61  	role := models.UserInputToOrgRole[c.Args()[2]]
    62  	user := cmd.userReq.GetUser()
    63  	org := cmd.orgReq.GetOrganization()
    64  
    65  	cmd.ui.Say(T("Removing role {{.Role}} from user {{.TargetUser}} in org {{.TargetOrg}} as {{.CurrentUser}}...",
    66  		map[string]interface{}{
    67  			"Role":        terminal.EntityNameColor(role),
    68  			"TargetUser":  terminal.EntityNameColor(c.Args()[0]),
    69  			"TargetOrg":   terminal.EntityNameColor(c.Args()[1]),
    70  			"CurrentUser": terminal.EntityNameColor(cmd.config.Username()),
    71  		}))
    72  
    73  	apiErr := cmd.userRepo.UnsetOrgRole(user.Guid, org.Guid, role)
    74  
    75  	if apiErr != nil {
    76  		cmd.ui.Failed(apiErr.Error())
    77  		return
    78  	}
    79  
    80  	cmd.ui.Ok()
    81  }