Skip to content

Commit 6a437c3

Browse files
feat(auth): add OAuth PKCE browser flow (#198)
* feat(auth): add OAuth PKCE browser flow * chore: update taskfile * fix: remove unused variable * fix(oauth): replace OOB OAuth flow with local callback server * fix: prevent Slowloris attack * chore: factorize to oauth_flow
1 parent da2a46f commit 6a437c3

25 files changed

Lines changed: 1732 additions & 21 deletions

File tree

.github/workflows/releases.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ jobs:
3838
env:
3939
GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }}
4040
CHOCOLATEY_API_KEY: ${{ secrets.CHOCOLATEY_API_KEY }}
41+
ALGOLIA_DASHBOARD_URL: ${{ secrets.ALGOLIA_DASHBOARD_URL }}
42+
ALGOLIA_API_URL: ${{ secrets.ALGOLIA_API_URL }}
43+
ALGOLIA_OAUTH_CLIENT_ID: ${{ secrets.ALGOLIA_OAUTH_CLIENT_ID }}
44+
ALGOLIA_OAUTH_SCOPE: ${{ secrets.ALGOLIA_OAUTH_SCOPE }}
4145
- name: Docs checkout
4246
uses: actions/checkout@v4
4347
with:

.goreleaser.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@ builds:
1616
binary: algolia
1717
main: ./cmd/algolia/main.go
1818
ldflags:
19-
- -s -w -X github.com/algolia/cli/pkg/version.Version={{.Version}}
19+
- -s -w
20+
-X github.com/algolia/cli/pkg/version.Version={{.Version}}
21+
-X github.com/algolia/cli/api/dashboard.DefaultDashboardURL={{ .Env.ALGOLIA_DASHBOARD_URL }}
22+
-X github.com/algolia/cli/api/dashboard.DefaultAPIURL={{ .Env.ALGOLIA_API_URL }}
23+
-X github.com/algolia/cli/pkg/auth.DefaultOAuthClientID={{ .Env.ALGOLIA_OAUTH_CLIENT_ID }}
24+
-X github.com/algolia/cli/api/dashboard.DefaultOAuthScope={{ .Env.ALGOLIA_OAUTH_SCOPE }}
2025
id: macos
2126
goos: [darwin]
2227
goarch: [amd64, arm64]

Makefile

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,14 @@ api-specs-pr:
6161
# Build the binary
6262
build:
6363
go generate ./...
64-
go build -ldflags "-s -w -X=github.com/algolia/cli/pkg/version.Version=$(VERSION)" -o algolia cmd/algolia/main.go
64+
go build -ldflags "\
65+
-s -w \
66+
-X=github.com/algolia/cli/pkg/version.Version=$(VERSION) \
67+
-X=github.com/algolia/cli/api/dashboard.DefaultDashboardURL=$(ALGOLIA_DASHBOARD_URL) \
68+
-X=github.com/algolia/cli/api/dashboard.DefaultAPIURL=$(ALGOLIA_API_URL) \
69+
-X=github.com/algolia/cli/pkg/auth.DefaultOAuthClientID=$(ALGOLIA_OAUTH_CLIENT_ID) \
70+
-X 'github.com/algolia/cli/api/dashboard.DefaultOAuthScope=$(ALGOLIA_OAUTH_SCOPE)'" \
71+
-o algolia cmd/algolia/main.go
6572
.PHONY: build
6673

6774
## Install & uninstall tasks are here for use on *nix platform only.

Taskfile.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
version: 3
22
output: prefixed
3+
dotenv: [.env]
34
vars:
45
# The URL to the "old" Algolia docs repo
56
docs_remote: https://github.com/algolia/doc.git
@@ -11,7 +12,15 @@ tasks:
1112
build:
1213
desc: Build the binary
1314
deps: [generate]
14-
cmd: go build -ldflags "-s -w -X=github.com/algolia/cli/pkg/version.Version={{ .VERSION }}" -o algolia cmd/algolia/main.go
15+
cmd: >-
16+
go build -ldflags
17+
"-s -w
18+
-X github.com/algolia/cli/pkg/version.Version={{ .VERSION }}
19+
-X github.com/algolia/cli/api/dashboard.DefaultDashboardURL=$ALGOLIA_DASHBOARD_URL
20+
-X github.com/algolia/cli/api/dashboard.DefaultAPIURL=$ALGOLIA_API_URL
21+
-X github.com/algolia/cli/pkg/auth.DefaultOAuthClientID=$ALGOLIA_OAUTH_CLIENT_ID
22+
-X 'github.com/algolia/cli/api/dashboard.DefaultOAuthScope=$ALGOLIA_OAUTH_SCOPE'"
23+
-o algolia cmd/algolia/main.go
1524
vars:
1625
VERSION: '{{ .VERSION | default "main" }}'
1726
test:
@@ -26,7 +35,6 @@ tasks:
2635
To run them, create a `.env` file with the `ALGOLIA_APPLICATION_ID`
2736
and `ALGOLIA_API_KEY` credentials.
2837
cmd: go test ./e2e -tags=e2e
29-
dotenv: [.env]
3038
lint:
3139
desc: Lint code
3240
cmd: golangci-lint run

0 commit comments

Comments
 (0)