@@ -14,25 +14,27 @@ import (
1414 "github.com/drycc/workflow-cli/settings"
1515)
1616
17- func (d * DryccCmd ) doLogin (s settings.Settings ) error {
18- URL , err := auth .Login (s .Client )
17+ func (d * DryccCmd ) doLogin (s settings.Settings , username , password string ) error {
18+ key , err := auth .Login (s .Client , username , password )
1919 if d .checkAPICompatibility (s .Client , err ) != nil {
2020 return err
2121 }
2222 if err != nil {
2323 return nil
2424 }
25- fmt .Printf ("Opening browser to %s\n " , URL )
26- d .Print ("Waiting for login... " )
27- err = d .openBrower (URL )
28- if err != nil {
29- d .Print ("Cannot open browser, please visit the website in yourself" )
30- }
31- u , err := url .Parse (URL )
32- if err != nil {
33- return err
25+ if username == "" || password == "" {
26+ fmt .Printf ("Opening browser to %s\n " , key )
27+ d .Print ("Waiting for login... " )
28+ err = d .openBrower (key )
29+ if err != nil {
30+ d .Print ("Cannot open browser, please visit the website in yourself" )
31+ }
32+ u , err := url .Parse (key )
33+ if err != nil {
34+ return err
35+ }
36+ key = u .Query ()["key" ][0 ]
3437 }
35- key := u .Query ()["key" ][0 ]
3638 quit := progress (d .WOut )
3739 d .doToken (s , key )
3840 quit <- true
@@ -60,13 +62,13 @@ func (d *DryccCmd) openBrower(URL string) error {
6062}
6163
6264func (d * DryccCmd ) doToken (s settings.Settings , key string ) error {
63- var token api.AuthLoginResponse
65+ var token api.AuthTokenResponse
6466 for i := 0 ; i <= 120 ; i ++ {
6567 token , _ = auth .Token (s .Client , key )
66- if token != (api.AuthLoginResponse {}) {
68+ time .Sleep (time .Duration (5 ) * time .Second )
69+ if token .Token != "" && token .Username != "" {
6770 break
6871 }
69- time .Sleep (time .Duration (5 ) * time .Second )
7072 }
7173 if token .Token == "" || token .Token == "fail" {
7274 d .Printf ("Logged fail" )
@@ -84,7 +86,7 @@ func (d *DryccCmd) doToken(s settings.Settings, key string) error {
8486}
8587
8688// Login to a Drycc controller.
87- func (d * DryccCmd ) Login (controller string , sslVerify bool ) error {
89+ func (d * DryccCmd ) Login (controller string , sslVerify bool , username , password string ) error {
8890 c , err := drycc .New (sslVerify , controller , "" )
8991
9092 if err != nil {
@@ -99,7 +101,7 @@ func (d *DryccCmd) Login(controller string, sslVerify bool) error {
99101 }
100102
101103 s := settings.Settings {Client : c }
102- return d .doLogin (s )
104+ return d .doLogin (s , username , password )
103105}
104106
105107// Logout from a Drycc controller.
0 commit comments