github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/unset_org_role_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/sharedaction"
     5  	"code.cloudfoundry.org/cli/actor/v7action"
     6  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant"
     7  	"code.cloudfoundry.org/cli/command"
     8  	"code.cloudfoundry.org/cli/command/translatableerror"
     9  	"code.cloudfoundry.org/clock"
    10  
    11  	"code.cloudfoundry.org/cli/command/flag"
    12  	"code.cloudfoundry.org/cli/command/v7/shared"
    13  )
    14  
    15  //go:generate counterfeiter . UnsetOrgRoleActor
    16  
    17  type UnsetOrgRoleActor interface {
    18  	DeleteOrgRole(roleType constant.RoleType, orgGUID string, userNameOrGUID string, userOrigin string, isClient bool) (v7action.Warnings, error)
    19  	GetOrganizationByName(name string) (v7action.Organization, v7action.Warnings, error)
    20  	GetUser(username, origin string) (v7action.User, error)
    21  }
    22  
    23  type UnsetOrgRoleCommand struct {
    24  	Args            flag.OrgRoleArgs `positional-args:"yes"`
    25  	IsClient        bool             `long:"client" description:"Unassign an org role for a client-id of a (non-user) service account"`
    26  	Origin          string           `long:"origin" description:"Indicates the identity provider to be used for authentication"`
    27  	usage           interface{}      `usage:"CF_NAME unset-org-role USERNAME ORG ROLE\n   CF_NAME unset-org-role USERNAME ORG ROLE [--client]\n   CF_NAME unset-org-role USERNAME ORG ROLE [--origin ORIGIN]\n\nROLES:\n   OrgManager - Invite and manage users, select and change plans, and set spending limits\n   BillingManager - Create and manage the billing account and payment info\n   OrgAuditor - Read-only access to org info and reports"`
    28  	relatedCommands interface{}      `related_commands:"org-users, set-space-role"`
    29  
    30  	UI          command.UI
    31  	Config      command.Config
    32  	SharedActor command.SharedActor
    33  	Actor       UnsetOrgRoleActor
    34  }
    35  
    36  func (cmd *UnsetOrgRoleCommand) Setup(config command.Config, ui command.UI) error {
    37  	cmd.UI = ui
    38  	cmd.Config = config
    39  	sharedActor := sharedaction.NewActor(config)
    40  	cmd.SharedActor = sharedActor
    41  
    42  	ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui, "")
    43  	if err != nil {
    44  		return err
    45  	}
    46  	cmd.Actor = v7action.NewActor(ccClient, config, sharedActor, uaaClient, clock.NewClock())
    47  	return nil
    48  }
    49  
    50  func (cmd *UnsetOrgRoleCommand) Execute(args []string) error {
    51  	err := cmd.validateFlags()
    52  	if err != nil {
    53  		return err
    54  	}
    55  
    56  	err = cmd.SharedActor.CheckTarget(false, false)
    57  	if err != nil {
    58  		return err
    59  	}
    60  
    61  	currentUser, err := cmd.Config.CurrentUser()
    62  	if err != nil {
    63  		return err
    64  	}
    65  
    66  	cmd.UI.DisplayTextWithFlavor("Removing role {{.RoleType}} from user {{.TargetUserName}} in org {{.OrgName}} as {{.CurrentUserName}}...", map[string]interface{}{
    67  		"RoleType":        cmd.Args.Role.Role,
    68  		"TargetUserName":  cmd.Args.Username,
    69  		"OrgName":         cmd.Args.Organization,
    70  		"CurrentUserName": currentUser.Name,
    71  	})
    72  
    73  	roleType, err := convertRoleType(cmd.Args.Role)
    74  	if err != nil {
    75  		return err
    76  	}
    77  
    78  	org, warnings, err := cmd.Actor.GetOrganizationByName(cmd.Args.Organization)
    79  	cmd.UI.DisplayWarnings(warnings)
    80  	if err != nil {
    81  		return err
    82  	}
    83  
    84  	origin := cmd.Origin
    85  	if origin == "" {
    86  		origin = constant.DefaultOriginUaa
    87  	}
    88  
    89  	warnings, err = cmd.Actor.DeleteOrgRole(roleType, org.GUID, cmd.Args.Username, origin, cmd.IsClient)
    90  	cmd.UI.DisplayWarnings(warnings)
    91  	if err != nil {
    92  		return err
    93  	}
    94  
    95  	cmd.UI.DisplayOK()
    96  
    97  	return nil
    98  }
    99  
   100  func (cmd UnsetOrgRoleCommand) validateFlags() error {
   101  	if cmd.IsClient && cmd.Origin != "" {
   102  		return translatableerror.ArgumentCombinationError{
   103  			Args: []string{"--client", "--origin"},
   104  		}
   105  	}
   106  	return nil
   107  }