Skip to content

Commit 36cabfd

Browse files
committed
refactor(auth): Switch to new API key client
1 parent 1d74e97 commit 36cabfd

File tree

3 files changed

+13
-36
lines changed

3 files changed

+13
-36
lines changed

cmd/main.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
package main
33

44
import (
5+
"fmt"
56
"os"
67
"time"
78

@@ -54,7 +55,12 @@ func initFactory() *cmdutil.Factory {
5455

5556
factory.Printer = printer.New()
5657

57-
factory.AuthClient = auth.NewZeaburWebAppOAuthClient()
58+
cbs, err := auth.NewCallbackServer()
59+
if err != nil {
60+
panic(fmt.Sprintf("failed to create callback server (internal error): %v", err))
61+
}
62+
63+
factory.AuthClient = auth.NewImplicitFlowClient(cbs)
5864

5965
factory.Prompter = prompt.New()
6066

internal/cmd/auth/login/login.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,22 +87,21 @@ func RunLogin(f *cmdutil.Factory, opts *Options) error {
8787
if f.Interactive {
8888
f.Log.Info("A browser window will be opened for you to login, please confirm")
8989
// get token from web
90-
token, err = f.AuthClient.Login()
90+
token, err := f.AuthClient.GenerateToken(context.Background())
9191
if err != nil {
9292
return fmt.Errorf("failed to login: %w", err)
9393
}
94-
tokenString = token.AccessToken
95-
f.Config.SetToken(token)
94+
tokenString = token
95+
96+
f.Config.SetTokenString(tokenString)
9697
} else {
9798
// get token from flag, env or config
9899
if tokenString = f.Config.GetTokenString(); tokenString == "" {
99100
return fmt.Errorf("please set ZEABUR_TOKEN environment variable or use --token flag to set token")
100101
}
101102
}
102103

103-
f.Config.SetTokenString(tokenString)
104-
105-
f.Log.Debugw("Token", "token", tokenString, "token detail", token)
104+
f.Log.Debugw("Token", "token", tokenString)
106105

107106
// because we just logged in, we need to create a new client
108107
f.ApiClient = opts.NewClient(tokenString)

internal/cmd/root/root.go

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,13 @@ func NewCmdRoot(f *cmdutil.Factory, version, commit, date string) (*cobra.Comman
5656

5757
var (
5858
tokenString string
59-
token *oauth2.Token
6059
err error
6160
)
6261

63-
token, err = f.AuthClient.Login()
62+
tokenString, err = f.AuthClient.GenerateToken(context.Background())
6463
if err != nil {
6564
return fmt.Errorf("failed to login: %w", err)
6665
}
67-
tokenString = token.AccessToken
68-
f.Config.SetToken(token)
6966
f.Config.SetTokenString(tokenString)
7067
}
7168
// set up the client
@@ -82,31 +79,6 @@ func NewCmdRoot(f *cmdutil.Factory, version, commit, date string) (*cobra.Comman
8279
return fmt.Errorf("failed to save config: %w", err)
8380
}
8481

85-
// refresh the token if the token is from OAuth2 & it's expired
86-
// skip help, version and auth commands
87-
if cmd.Name() != "help" && cmd.Name() != "version" && cmd.Parent().Name() != "auth" {
88-
if f.AutoRefreshToken && f.LoggedIn() && f.Config.GetToken() != nil {
89-
if f.Config.GetToken().Expiry.Before(time.Now()) {
90-
f.Log.Info("Token is from OAuth2 and it's expired, refreshing it")
91-
92-
token := f.Config.GetToken()
93-
token.Expiry = time.Now()
94-
newToken, err := f.AuthClient.RefreshToken(token)
95-
if err != nil {
96-
return fmt.Errorf("failed to refresh token, it is recommended to logout and login again: %w", err)
97-
}
98-
f.Config.SetToken(newToken)
99-
f.Config.SetTokenString(newToken.AccessToken)
100-
f.Log.Debug("New token: ", newToken)
101-
if err := f.Config.Write(); err != nil {
102-
return fmt.Errorf("failed to save config: %w", err)
103-
}
104-
105-
f.Log.Info("Token refreshed successfully")
106-
}
107-
}
108-
}
109-
11082
if f.AutoCheckUpdate && !f.Debug && version != "dev" {
11183
currentVersion := TrimPrefixV(version)
11284

0 commit comments

Comments
 (0)