From 1232eb75a321b07e8a723d9dd8c485dbdef42415 Mon Sep 17 00:00:00 2001 From: eti Date: Thu, 24 Sep 2026 18:55:59 +0200 Subject: [PATCH] web: request repo:* in the dev loopback scope to fit chromium's referer limit Signed-off-by: eti --- web/src/lib/oauth-client-metadata.test.ts | 17 +++++++++++++++++ web/src/lib/oauth-client-metadata.ts | 4 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 web/src/lib/oauth-client-metadata.test.ts diff --git a/web/src/lib/oauth-client-metadata.test.ts b/web/src/lib/oauth-client-metadata.test.ts new file mode 100644 index 000000000..1c9e82c0a --- /dev/null +++ b/web/src/lib/oauth-client-metadata.test.ts @@ -0,0 +1,17 @@ +import { describe, expect, it } from "vitest"; +import { loopbackClientId, loopbackScope } from "$lib/oauth-client-metadata"; + +describe("loopbackClientId", () => { + it("keeps the authorize url within chromium's referrer length limit", () => { + const url = new URL("https://tngl.sh/oauth/authorize"); + url.searchParams.set( + "client_id", + loopbackClientId("http://127.0.0.1:5173/oauth/callback", loopbackScope) + ); + url.searchParams.set( + "request_uri", + `urn:ietf:params:oauth:request_uri:req-${"0".repeat(32)}` + ); + expect(url.href.length).toBeLessThanOrEqual(4096); + }); +}); diff --git a/web/src/lib/oauth-client-metadata.ts b/web/src/lib/oauth-client-metadata.ts index 36b23e7f7..c738db9ec 100644 --- a/web/src/lib/oauth-client-metadata.ts +++ b/web/src/lib/oauth-client-metadata.ts @@ -119,9 +119,9 @@ export const loopbackScope = (() => { for (const scope of scopes) { const match = rpcAnyAudience.exec(scope); if (match) lxm.push(match[1]); - else rest.push(scope); + else if (!scope.startsWith("repo:")) rest.push(scope); } - return [...rest, `rpc?${lxm.map((nsid) => `lxm=${nsid}`).join("&")}&aud=*`].join(" "); + return [...rest, "repo:*", `rpc?${lxm.map((nsid) => `lxm=${nsid}`).join("&")}&aud=*`].join(" "); })(); const queryValue = (value: string) => -- 2.51.2