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