github.com/sleungcy/cli@v7.1.0+incompatible/command/v7/unset_space_role_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/command/flag"
     5  	"code.cloudfoundry.org/cli/command/translatableerror"
     6  )
     7  
     8  type UnsetSpaceRoleCommand struct {
     9  	BaseCommand
    10  
    11  	Args            flag.SpaceRoleArgs `positional-args:"yes"`
    12  	IsClient        bool               `long:"client" description:"Remove space role from a client-id of a (non-user) service account"`
    13  	Origin          string             `long:"origin" description:"Indicates the identity provider to be used for authentication"`
    14  	usage           interface{}        `usage:"CF_NAME unset-space-role USERNAME ORG SPACE ROLE\n   CF_NAME unset-space-role USERNAME ORG SPACE ROLE [--client]\n   CF_NAME unset-space-role USERNAME ORG SPACE ROLE [--origin ORIGIN]\n\nROLES:\n   SpaceManager - Invite and manage users, and enable features for a given space\n   SpaceDeveloper - Create and manage apps and services, and see logs and reports\n   SpaceAuditor - View logs, reports, and settings on this space"`
    15  	relatedCommands interface{}        `related_commands:"set-space-role, space-users"`
    16  }
    17  
    18  func (cmd *UnsetSpaceRoleCommand) Execute(args []string) error {
    19  	err := cmd.validateFlags()
    20  	if err != nil {
    21  		return err
    22  	}
    23  
    24  	err = cmd.SharedActor.CheckTarget(false, false)
    25  	if err != nil {
    26  		return err
    27  	}
    28  
    29  	currentUser, err := cmd.Config.CurrentUser()
    30  	if err != nil {
    31  		return err
    32  	}
    33  
    34  	cmd.UI.DisplayTextWithFlavor("Removing role {{.RoleType}} from user {{.TargetUserName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.CurrentUserName}}...", map[string]interface{}{
    35  		"RoleType":        cmd.Args.Role.Role,
    36  		"TargetUserName":  cmd.Args.Username,
    37  		"OrgName":         cmd.Args.Organization,
    38  		"SpaceName":       cmd.Args.Space,
    39  		"CurrentUserName": currentUser.Name,
    40  	})
    41  
    42  	roleType, err := convertSpaceRoleType(cmd.Args.Role)
    43  	if err != nil {
    44  		return err
    45  	}
    46  
    47  	org, warnings, err := cmd.Actor.GetOrganizationByName(cmd.Args.Organization)
    48  	cmd.UI.DisplayWarnings(warnings)
    49  	if err != nil {
    50  		return err
    51  	}
    52  
    53  	space, warnings, err := cmd.Actor.GetSpaceByNameAndOrganization(cmd.Args.Space, org.GUID)
    54  	cmd.UI.DisplayWarnings(warnings)
    55  	if err != nil {
    56  		return err
    57  	}
    58  
    59  	warnings, err = cmd.Actor.DeleteSpaceRole(roleType, space.GUID, cmd.Args.Username, cmd.Origin, cmd.IsClient)
    60  	cmd.UI.DisplayWarnings(warnings)
    61  	if err != nil {
    62  		return err
    63  	}
    64  
    65  	cmd.UI.DisplayOK()
    66  
    67  	return nil
    68  }
    69  
    70  func (cmd UnsetSpaceRoleCommand) validateFlags() error {
    71  	if cmd.IsClient && cmd.Origin != "" {
    72  		return translatableerror.ArgumentCombinationError{
    73  			Args: []string{"--client", "--origin"},
    74  		}
    75  	}
    76  	return nil
    77  }