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 }