88 "syscall"
99
1010 "github.com/deis/deis/client-go/controller/client"
11+ "github.com/deis/deis/client-go/controller/models/auth"
1112 "golang.org/x/crypto/ssh/terminal"
1213)
1314
@@ -16,6 +17,7 @@ func Register(controller string, username string, password string, email string,
1617 sslVerify bool ) error {
1718
1819 u , err := url .Parse (controller )
20+ httpClient := client .CreateHTTPClient (sslVerify )
1921
2022 if err != nil {
2123 return err
@@ -27,7 +29,7 @@ func Register(controller string, username string, password string, email string,
2729 return err
2830 }
2931
30- if err = client .CheckConection (client . CreateHTTPClient ( sslVerify ) , controllerURL ); err != nil {
32+ if err = client .CheckConection (httpClient , controllerURL ); err != nil {
3133 return err
3234 }
3335
@@ -57,7 +59,42 @@ func Register(controller string, username string, password string, email string,
5759 fmt .Scanln (& email )
5860 }
5961
60- return client .Register (controllerURL , username , password , email , sslVerify , true )
62+ c := & client.Client {ControllerURL : controllerURL , SSLVerify : sslVerify , HTTPClient : httpClient }
63+
64+ tempClient , err := client .New ()
65+
66+ if err == nil {
67+ c .Token = tempClient .Token
68+ }
69+
70+ err = auth .Register (c , username , password , email )
71+
72+ if err != nil {
73+ return err
74+ }
75+
76+ fmt .Printf ("Registered %s\n " , username )
77+ return doLogin (c , username , password )
78+ }
79+
80+ func doLogin (c * client.Client , username , password string ) error {
81+ token , err := auth .Login (c , username , password )
82+
83+ if err != nil {
84+ return err
85+ }
86+
87+ c .Token = token
88+ c .Username = username
89+
90+ err = c .Save ()
91+
92+ if err != nil {
93+ return nil
94+ }
95+
96+ fmt .Printf ("Logged in as %s\n " , username )
97+ return nil
6198}
6299
63100// Login to a Deis controller.
@@ -69,12 +106,13 @@ func Login(controller string, username string, password string, sslVerify bool)
69106 }
70107
71108 controllerURL , err := chooseScheme (* u )
109+ httpClient := client .CreateHTTPClient (sslVerify )
72110
73111 if err != nil {
74112 return err
75113 }
76114
77- if err = client .CheckConection (client . CreateHTTPClient ( sslVerify ) , controllerURL ); err != nil {
115+ if err = client .CheckConection (httpClient , controllerURL ); err != nil {
78116 return err
79117 }
80118
@@ -93,17 +131,28 @@ func Login(controller string, username string, password string, sslVerify bool)
93131 }
94132 }
95133
96- return client .Login (controllerURL , username , password , sslVerify )
134+ c := & client.Client {ControllerURL : controllerURL , SSLVerify : sslVerify , HTTPClient : httpClient }
135+
136+ return doLogin (c , username , password )
97137}
98138
99139// Logout from a Deis controller.
100140func Logout () error {
101- return client .Logout ()
141+ if err := client .Delete (); err != nil {
142+ return err
143+ }
144+
145+ fmt .Println ("Logged out" )
146+ return nil
102147}
103148
104149// Passwd changes a user's password.
105150func Passwd (username string , password string , newPassword string ) error {
106- var err error
151+ c , err := client .New ()
152+
153+ if err != nil {
154+ return err
155+ }
107156
108157 if password == "" && username == "" {
109158 fmt .Print ("current password: " )
@@ -132,7 +181,14 @@ func Passwd(username string, password string, newPassword string) error {
132181 }
133182 }
134183
135- return client .Passwd (username , password , newPassword )
184+ err = auth .Passwd (c , username , password , newPassword )
185+
186+ if err != nil {
187+ return err
188+ }
189+
190+ fmt .Println ("Password change succeeded." )
191+ return nil
136192}
137193
138194// Cancel deletes a user's account.
@@ -171,7 +227,18 @@ func Cancel(username string, password string, yes bool) error {
171227 return nil
172228 }
173229
174- return client .Cancel ()
230+ err = auth .Delete (c )
231+
232+ if err != nil {
233+ return err
234+ }
235+
236+ if err := client .Delete (); err != nil {
237+ return err
238+ }
239+
240+ fmt .Println ("Account cancelled" )
241+ return nil
175242}
176243
177244// Whoami prints the logged in user.
@@ -188,7 +255,30 @@ func Whoami() error {
188255
189256// Regenerate regenenerates a user's token.
190257func Regenerate (username string , all bool ) error {
191- return client .Regenerate (username , all )
258+ c , err := client .New ()
259+
260+ if err != nil {
261+ return err
262+ }
263+
264+ token , err := auth .Regenerate (c , username , all )
265+
266+ if err != nil {
267+ return err
268+ }
269+
270+ if username == "" && all == false {
271+ c .Token = token
272+
273+ err = c .Save ()
274+
275+ if err != nil {
276+ return err
277+ }
278+ }
279+
280+ fmt .Println ("Token Regenerated" )
281+ return nil
192282}
193283
194284func readPassword () (string , error ) {
0 commit comments