github.com/naphatkrit/deis@v1.12.3/client/controller/models/perms/perms.go (about)

     1  package perms
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  
     7  	"github.com/deis/deis/client/controller/api"
     8  	"github.com/deis/deis/client/controller/client"
     9  )
    10  
    11  // List users that can access an app.
    12  func List(c *client.Client, appID string) ([]string, error) {
    13  	body, err := c.BasicRequest("GET", fmt.Sprintf("/v1/apps/%s/perms/", appID), nil)
    14  
    15  	if err != nil {
    16  		return []string{}, err
    17  	}
    18  
    19  	var users api.PermsAppResponse
    20  	if err = json.Unmarshal([]byte(body), &users); err != nil {
    21  		return []string{}, err
    22  	}
    23  
    24  	return users.Users, nil
    25  }
    26  
    27  // ListAdmins lists administrators.
    28  func ListAdmins(c *client.Client, results int) ([]string, int, error) {
    29  	body, count, err := c.LimitedRequest("/v1/admin/perms/", results)
    30  
    31  	if err != nil {
    32  		return []string{}, -1, err
    33  	}
    34  
    35  	var users []api.PermsRequest
    36  	if err = json.Unmarshal([]byte(body), &users); err != nil {
    37  		return []string{}, -1, err
    38  	}
    39  
    40  	usersList := []string{}
    41  
    42  	for _, user := range users {
    43  		usersList = append(usersList, user.Username)
    44  	}
    45  
    46  	return usersList, count, nil
    47  }
    48  
    49  // New adds a user to an app.
    50  func New(c *client.Client, appID string, username string) error {
    51  	return doNew(c, fmt.Sprintf("/v1/apps/%s/perms/", appID), username)
    52  }
    53  
    54  // NewAdmin makes a user an administrator.
    55  func NewAdmin(c *client.Client, username string) error {
    56  	return doNew(c, "/v1/admin/perms/", username)
    57  }
    58  
    59  func doNew(c *client.Client, u string, username string) error {
    60  	req := api.PermsRequest{Username: username}
    61  
    62  	reqBody, err := json.Marshal(req)
    63  
    64  	if err != nil {
    65  		return err
    66  	}
    67  
    68  	_, err = c.BasicRequest("POST", u, reqBody)
    69  
    70  	if err != nil {
    71  		return err
    72  	}
    73  
    74  	return nil
    75  }
    76  
    77  // Delete removes a user from an app.
    78  func Delete(c *client.Client, appID string, username string) error {
    79  	return doDelete(c, fmt.Sprintf("/v1/apps/%s/perms/%s", appID, username))
    80  }
    81  
    82  // DeleteAdmin removes administrative privilages from a user.
    83  func DeleteAdmin(c *client.Client, username string) error {
    84  	return doDelete(c, fmt.Sprintf("/v1/admin/perms/%s", username))
    85  }
    86  
    87  func doDelete(c *client.Client, u string) error {
    88  	_, err := c.BasicRequest("DELETE", u, nil)
    89  	return err
    90  }