github.com/rafflecopter/deis@v1.12.2/client/cmd/perms.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/deis/deis/client/controller/client"
     7  	"github.com/deis/deis/client/controller/models/perms"
     8  	"github.com/deis/deis/client/pkg/git"
     9  )
    10  
    11  // PermsList prints which users have permissions.
    12  func PermsList(appID string, admin bool, results int) error {
    13  	c, appID, err := permsLoad(appID, admin)
    14  
    15  	if err != nil {
    16  		return err
    17  	}
    18  
    19  	var users []string
    20  	var count int
    21  
    22  	if admin {
    23  		if results == defaultLimit {
    24  			results = c.ResponseLimit
    25  		}
    26  		users, count, err = perms.ListAdmins(c, results)
    27  	} else {
    28  		users, err = perms.List(c, appID)
    29  	}
    30  
    31  	if err != nil {
    32  		return err
    33  	}
    34  
    35  	if admin {
    36  		fmt.Printf("=== Administrators%s", limitCount(len(users), count))
    37  	} else {
    38  		fmt.Printf("=== %s's Users\n", appID)
    39  	}
    40  
    41  	for _, user := range users {
    42  		fmt.Println(user)
    43  	}
    44  
    45  	return nil
    46  }
    47  
    48  // PermCreate adds a user to an app or makes them an administrator.
    49  func PermCreate(appID string, username string, admin bool) error {
    50  
    51  	c, appID, err := permsLoad(appID, admin)
    52  
    53  	if err != nil {
    54  		return err
    55  	}
    56  
    57  	if admin {
    58  		fmt.Printf("Adding %s to system administrators... ", username)
    59  		err = perms.NewAdmin(c, username)
    60  	} else {
    61  		fmt.Printf("Adding %s to %s collaborators... ", username, appID)
    62  		err = perms.New(c, appID, username)
    63  	}
    64  
    65  	if err != nil {
    66  		return err
    67  	}
    68  
    69  	fmt.Println("done")
    70  
    71  	return nil
    72  }
    73  
    74  // PermDelete removes a user from an app or revokes admin privilages.
    75  func PermDelete(appID string, username string, admin bool) error {
    76  
    77  	c, appID, err := permsLoad(appID, admin)
    78  
    79  	if err != nil {
    80  		return err
    81  	}
    82  
    83  	if admin {
    84  		fmt.Printf("Removing %s from system administrators... ", username)
    85  		err = perms.DeleteAdmin(c, username)
    86  	} else {
    87  		fmt.Printf("Removing %s from %s collaborators... ", username, appID)
    88  		err = perms.Delete(c, appID, username)
    89  	}
    90  
    91  	if err != nil {
    92  		return err
    93  	}
    94  
    95  	fmt.Println("done")
    96  
    97  	return nil
    98  }
    99  
   100  func permsLoad(appID string, admin bool) (*client.Client, string, error) {
   101  	c, err := client.New()
   102  
   103  	if err != nil {
   104  		return nil, "", err
   105  	}
   106  
   107  	if !admin && appID == "" {
   108  		appID, err = git.DetectAppName(c.ControllerURL.Host)
   109  
   110  		if err != nil {
   111  			return nil, "", err
   112  		}
   113  	}
   114  
   115  	return c, appID, err
   116  }