77 "strings"
88
99 "github.com/deis/deis/client-go/controller/client"
10+ "github.com/deis/deis/client-go/controller/models/auth"
1011 "golang.org/x/crypto/ssh/terminal"
1112)
1213
@@ -15,6 +16,7 @@ func Register(controller string, username string, password string, email string,
1516 sslVerify bool ) error {
1617
1718 u , err := url .Parse (controller )
19+ httpClient := client .CreateHTTPClient (sslVerify )
1820
1921 if err != nil {
2022 return err
@@ -26,7 +28,7 @@ func Register(controller string, username string, password string, email string,
2628 return err
2729 }
2830
29- if err = client .CheckConection (client . CreateHTTPClient ( sslVerify ) , controllerURL ); err != nil {
31+ if err = client .CheckConection (httpClient , controllerURL ); err != nil {
3032 return err
3133 }
3234
@@ -56,7 +58,42 @@ func Register(controller string, username string, password string, email string,
5658 fmt .Scanln (& email )
5759 }
5860
59- return client .Register (controllerURL , username , password , email , sslVerify , true )
61+ c := & client.Client {ControllerURL : controllerURL , SSLVerify : sslVerify , HTTPClient : httpClient }
62+
63+ tempClient , err := client .New ()
64+
65+ if err == nil {
66+ c .Token = tempClient .Token
67+ }
68+
69+ err = auth .Register (c , username , password , email )
70+
71+ if err != nil {
72+ return err
73+ }
74+
75+ fmt .Printf ("Registered %s\n " , username )
76+ return doLogin (c , username , password )
77+ }
78+
79+ func doLogin (c * client.Client , username , password string ) error {
80+ token , err := auth .Login (c , username , password )
81+
82+ if err != nil {
83+ return err
84+ }
85+
86+ c .Token = token
87+ c .Username = username
88+
89+ err = c .Save ()
90+
91+ if err != nil {
92+ return nil
93+ }
94+
95+ fmt .Printf ("Logged in as %s\n " , username )
96+ return nil
6097}
6198
6299// Login to a Deis controller.
@@ -68,12 +105,13 @@ func Login(controller string, username string, password string, sslVerify bool)
68105 }
69106
70107 controllerURL , err := chooseScheme (* u )
108+ httpClient := client .CreateHTTPClient (sslVerify )
71109
72110 if err != nil {
73111 return err
74112 }
75113
76- if err = client .CheckConection (client . CreateHTTPClient ( sslVerify ) , controllerURL ); err != nil {
114+ if err = client .CheckConection (httpClient , controllerURL ); err != nil {
77115 return err
78116 }
79117
@@ -92,17 +130,28 @@ func Login(controller string, username string, password string, sslVerify bool)
92130 }
93131 }
94132
95- return client .Login (controllerURL , username , password , sslVerify )
133+ c := & client.Client {ControllerURL : controllerURL , SSLVerify : sslVerify , HTTPClient : httpClient }
134+
135+ return doLogin (c , username , password )
96136}
97137
98138// Logout from a Deis controller.
99139func Logout () error {
100- return client .Logout ()
140+ if err := client .Delete (); err != nil {
141+ return err
142+ }
143+
144+ fmt .Println ("Logged out" )
145+ return nil
101146}
102147
103148// Passwd changes a user's password.
104149func Passwd (username string , password string , newPassword string ) error {
105- var err error
150+ c , err := client .New ()
151+
152+ if err != nil {
153+ return err
154+ }
106155
107156 if password == "" {
108157 fmt .Print ("current password: " )
@@ -131,7 +180,14 @@ func Passwd(username string, password string, newPassword string) error {
131180 }
132181 }
133182
134- return client .Passwd (username , password , newPassword )
183+ err = auth .Passwd (c , username , password , newPassword )
184+
185+ if err != nil {
186+ return err
187+ }
188+
189+ fmt .Println ("Password change succeeded." )
190+ return nil
135191}
136192
137193// Cancel deletes a user's account.
@@ -170,7 +226,18 @@ func Cancel(username string, password string, yes bool) error {
170226 return nil
171227 }
172228
173- return client .Cancel ()
229+ err = auth .Delete (c )
230+
231+ if err != nil {
232+ return err
233+ }
234+
235+ if err := client .Delete (); err != nil {
236+ return err
237+ }
238+
239+ fmt .Println ("Account cancelled" )
240+ return nil
174241}
175242
176243// Whoami prints the logged in user.
@@ -187,7 +254,30 @@ func Whoami() error {
187254
188255// Regenerate regenenerates a user's token.
189256func Regenerate (username string , all bool ) error {
190- return client .Regenerate (username , all )
257+ c , err := client .New ()
258+
259+ if err != nil {
260+ return err
261+ }
262+
263+ token , err := auth .Regenerate (c , username , all )
264+
265+ if err != nil {
266+ return err
267+ }
268+
269+ if username == "" && all == false {
270+ c .Token = token
271+
272+ err = c .Save ()
273+
274+ if err != nil {
275+ return err
276+ }
277+ }
278+
279+ fmt .Println ("Token Regenerated" )
280+ return nil
191281}
192282
193283func readPassword () (string , error ) {
0 commit comments