From 5145def5dc0f3c59e2dc405a374358ea222eaea2 Mon Sep 17 00:00:00 2001 From: Seongmin Lee Date: Sun, 19 Oct 2025 22:38:47 +0900 Subject: [PATCH] appview/oauth: support custom PLC directory Change-Id: kxozpvvnyuuormzuppxyuxopuzxpmkoz - inherit idResolver's PLC directory for oauth - override `Client.Transport` to support PDS served in localhost Signed-off-by: Seongmin Lee --- appview/oauth/oauth.go | 4 ++++ appview/state/login.go | 1 + indexes/issues.bleve/index_meta.json | 1 + indexes/issues.bleve/store/000000000002.zap | Bin 0 -> 31880 bytes indexes/issues.bleve/store/root.bolt | Bin 0 -> 262144 bytes indexes/pulls.bleve/index_meta.json | 1 + indexes/pulls.bleve/store/000000000005.zap | Bin 0 -> 3666 bytes indexes/pulls.bleve/store/root.bolt | Bin 0 -> 262144 bytes 8 files changed, 7 insertions(+) create mode 100644 indexes/issues.bleve/index_meta.json create mode 100644 indexes/issues.bleve/store/000000000002.zap create mode 100644 indexes/issues.bleve/store/root.bolt create mode 100644 indexes/pulls.bleve/index_meta.json create mode 100644 indexes/pulls.bleve/store/000000000005.zap create mode 100644 indexes/pulls.bleve/store/root.bolt diff --git a/appview/oauth/oauth.go b/appview/oauth/oauth.go index f81500bc..9f194548 100644 --- a/appview/oauth/oauth.go +++ b/appview/oauth/oauth.go @@ -60,6 +60,10 @@ func New(config *config.Config, ph posthog.Client, db *db.DB, enforcer *rbac.Enf clientApp := oauth.NewClientApp(&oauthConfig, authStore) clientApp.Dir = res.Directory() + // allow non-public transports in dev mode + if config.Core.Dev { + clientApp.Resolver.Client.Transport = http.DefaultTransport + } return &OAuth{ ClientApp: clientApp, diff --git a/appview/state/login.go b/appview/state/login.go index 89797cb7..309ef2f5 100644 --- a/appview/state/login.go +++ b/appview/state/login.go @@ -46,6 +46,7 @@ func (s *State) Login(w http.ResponseWriter, r *http.Request) { redirectURL, err := s.oauth.ClientApp.StartAuthFlow(r.Context(), handle) if err != nil { + l.Error("failed to start auth", "err", err) http.Error(w, err.Error(), http.StatusInternalServerError) return } diff --git a/indexes/issues.bleve/index_meta.json b/indexes/issues.bleve/index_meta.json new file mode 100644 index 00000000..5dc34056 --- /dev/null +++ b/indexes/issues.bleve/index_meta.json @@ -0,0 +1 @@ +{"storage":"boltdb","index_type":"scorch"} \ No newline at end of file diff --git a/indexes/issues.bleve/store/000000000002.zap b/indexes/issues.bleve/store/000000000002.zap new file mode 100644 index 0000000000000000000000000000000000000000..7701e63f3e2de415d3cab35a02d236dd0afdde54 GIT binary patch literal 31880 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 literal 0 HcmV?d00001 diff --git a/indexes/issues.bleve/store/root.bolt b/indexes/issues.bleve/store/root.bolt new file mode 100644 index 0000000000000000000000000000000000000000..648964470281a54461766367f7197e015a882833 GIT binary patch literal 262144 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