Skip to content

Commit aeefefe

Browse files
chore: factorize to oauth_flow
1 parent 3b29020 commit aeefefe

6 files changed

Lines changed: 23 additions & 24 deletions

File tree

.goreleaser.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ builds:
2020
-X github.com/algolia/cli/pkg/version.Version={{.Version}}
2121
-X github.com/algolia/cli/api/dashboard.DefaultDashboardURL={{ .Env.ALGOLIA_DASHBOARD_URL }}
2222
-X github.com/algolia/cli/api/dashboard.DefaultAPIURL={{ .Env.ALGOLIA_API_URL }}
23-
-X github.com/algolia/cli/pkg/cmd/auth/login.DefaultOAuthClientID={{ .Env.ALGOLIA_OAUTH_CLIENT_ID }}
23+
-X github.com/algolia/cli/pkg/auth.DefaultOAuthClientID={{ .Env.ALGOLIA_OAUTH_CLIENT_ID }}
2424
-X github.com/algolia/cli/api/dashboard.DefaultOAuthScope={{ .Env.ALGOLIA_OAUTH_SCOPE }}
2525
id: macos
2626
goos: [darwin]

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ build:
6666
-X=github.com/algolia/cli/pkg/version.Version=$(VERSION) \
6767
-X=github.com/algolia/cli/api/dashboard.DefaultDashboardURL=$(ALGOLIA_DASHBOARD_URL) \
6868
-X=github.com/algolia/cli/api/dashboard.DefaultAPIURL=$(ALGOLIA_API_URL) \
69-
-X=github.com/algolia/cli/pkg/cmd/auth/login.DefaultOAuthClientID=$(ALGOLIA_OAUTH_CLIENT_ID) \
69+
-X=github.com/algolia/cli/pkg/auth.DefaultOAuthClientID=$(ALGOLIA_OAUTH_CLIENT_ID) \
7070
-X 'github.com/algolia/cli/api/dashboard.DefaultOAuthScope=$(ALGOLIA_OAUTH_SCOPE)'" \
7171
-o algolia cmd/algolia/main.go
7272
.PHONY: build

Taskfile.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ tasks:
1818
-X github.com/algolia/cli/pkg/version.Version={{ .VERSION }}
1919
-X github.com/algolia/cli/api/dashboard.DefaultDashboardURL=$ALGOLIA_DASHBOARD_URL
2020
-X github.com/algolia/cli/api/dashboard.DefaultAPIURL=$ALGOLIA_API_URL
21-
-X github.com/algolia/cli/pkg/cmd/auth/login.DefaultOAuthClientID=$ALGOLIA_OAUTH_CLIENT_ID
21+
-X github.com/algolia/cli/pkg/auth.DefaultOAuthClientID=$ALGOLIA_OAUTH_CLIENT_ID
2222
-X 'github.com/algolia/cli/api/dashboard.DefaultOAuthScope=$ALGOLIA_OAUTH_SCOPE'"
2323
-o algolia cmd/algolia/main.go
2424
vars:

pkg/auth/oauth_flow.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,31 @@ package auth
22

33
import (
44
"fmt"
5+
"os"
56
"os/exec"
67
"runtime"
78

89
"github.com/algolia/cli/api/dashboard"
910
"github.com/algolia/cli/pkg/iostreams"
1011
)
1112

13+
// DefaultOAuthClientID is injected at build time via ldflags.
14+
// Override with ALGOLIA_OAUTH_CLIENT_ID environment variable for local development.
15+
var DefaultOAuthClientID = ""
16+
17+
// OAuthClientID returns the OAuth client ID, preferring the ALGOLIA_OAUTH_CLIENT_ID
18+
// environment variable over the compiled-in default (set via ldflags).
19+
func OAuthClientID() string {
20+
if v := os.Getenv("ALGOLIA_OAUTH_CLIENT_ID"); v != "" {
21+
return v
22+
}
23+
if DefaultOAuthClientID == "" {
24+
fmt.Fprintln(os.Stderr, "fatal: ALGOLIA_OAUTH_CLIENT_ID is not set and no default was compiled in")
25+
os.Exit(1)
26+
}
27+
return DefaultOAuthClientID
28+
}
29+
1230
// RunOAuth runs the OAuth PKCE flow with a local callback server and returns
1331
// a valid access token. A local HTTP server is started on a random port to
1432
// receive the authorization code via redirect — no copy-paste required.

pkg/cmd/auth/login/login.go

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package login
22

33
import (
44
"fmt"
5-
"os"
65

76
"github.com/AlecAivazis/survey/v2"
87
"github.com/MakeNowJust/heredoc"
@@ -18,23 +17,6 @@ import (
1817
"github.com/algolia/cli/pkg/validators"
1918
)
2019

21-
// DefaultOAuthClientID is injected at build time via ldflags.
22-
// Override with ALGOLIA_OAUTH_CLIENT_ID environment variable for local development.
23-
var DefaultOAuthClientID = ""
24-
25-
// OAuthClientID returns the OAuth client ID, preferring the ALGOLIA_OAUTH_CLIENT_ID
26-
// environment variable over the compiled-in default (set via ldflags).
27-
func OAuthClientID() string {
28-
if v := os.Getenv("ALGOLIA_OAUTH_CLIENT_ID"); v != "" {
29-
return v
30-
}
31-
if DefaultOAuthClientID == "" {
32-
fmt.Fprintln(os.Stderr, "fatal: ALGOLIA_OAUTH_CLIENT_ID is not set and no default was compiled in")
33-
os.Exit(1)
34-
}
35-
return DefaultOAuthClientID
36-
}
37-
3820
// LoginOptions holds all options for the login command.
3921
type LoginOptions struct {
4022
IO *iostreams.IOStreams
@@ -109,7 +91,7 @@ func runLoginCmd(opts *LoginOptions) error {
10991
// If signup is true, the browser opens to the sign-up page instead of sign-in.
11092
func RunOAuthFlow(opts *LoginOptions, signup bool) error {
11193
cs := opts.IO.ColorScheme()
112-
client := opts.NewDashboardClient(OAuthClientID())
94+
client := opts.NewDashboardClient(auth.OAuthClientID())
11395

11496
openBrowser := !opts.NoBrowser
11597
accessToken, err := auth.RunOAuth(opts.IO, client, signup, openBrowser)

pkg/cmd/auth/logout/logout.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88

99
"github.com/algolia/cli/api/dashboard"
1010
"github.com/algolia/cli/pkg/auth"
11-
"github.com/algolia/cli/pkg/cmd/auth/login"
1211
"github.com/algolia/cli/pkg/cmdutil"
1312
"github.com/algolia/cli/pkg/iostreams"
1413
"github.com/algolia/cli/pkg/validators"
@@ -55,7 +54,7 @@ func runLogoutCmd(opts *LogoutOptions) error {
5554
return nil
5655
}
5756

58-
client := opts.NewDashboardClient(login.OAuthClientID())
57+
client := opts.NewDashboardClient(auth.OAuthClientID())
5958

6059
if stored.AccessToken != "" {
6160
if err := client.RevokeToken(stored.AccessToken); err != nil {

0 commit comments

Comments
 (0)