diff --git a/web/workspace/deno.json b/web/workspace/deno.json index fb77d2650..6b4622ebe 100644 --- a/web/workspace/deno.json +++ b/web/workspace/deno.json @@ -22,7 +22,7 @@ "generate:ticket-api": "cd ../.. && cargo run -q -p server-api --example generate_ticket_api_types", "check:ticket-api": "cd ../.. && cargo run -q -p server-api --example generate_ticket_api_types -- --check", "test:browser:auth": "mkdir -p ../../target/web-ux/tmp && TMPDIR=../../target/web-ux/tmp deno test --config ../../tools/web-ux/deno.json --allow-env --allow-net --allow-read --allow-write --allow-run --allow-sys test/auth-browser/auth-shell.browser.test.ts", - "test:browser:entry": "mkdir -p ../../target/web-ux/tmp && TMPDIR=../../target/web-ux/tmp deno test --config ../../tools/web-ux/deno.json --allow-env --allow-net --allow-read --allow-write --allow-run --allow-sys test/auth-browser/entry-shell.browser.test.ts" + "test:browser:entry": "mkdir -p ../../target/web-ux/tmp && TMPDIR=../../target/web-ux/tmp deno test --config ../../tools/web-ux/deno.json --allow-env --allow-net --allow-read --allow-write --allow-run --allow-sys test/auth-browser/entry-shell.browser.test.ts test/auth-browser/sidebar-shell.browser.test.ts" }, "imports": { "@sveltejs/adapter-static": "npm:@sveltejs/adapter-static@4.0.0", diff --git a/web/workspace/src/lib/workspace/auth/routes.test.ts b/web/workspace/src/lib/workspace/auth/routes.test.ts index feee08cd7..46c99678c 100644 --- a/web/workspace/src/lib/workspace/auth/routes.test.ts +++ b/web/workspace/src/lib/workspace/auth/routes.test.ts @@ -10,7 +10,22 @@ function assertEquals( ); } } -import { authEntryUrl, loginUrl, safeReturnTo } from "./routes.ts"; +import { + authEntryUrl, + isAuthPage, + isPublicPage, + loginUrl, + safeReturnTo, +} from "./routes.ts"; + +Deno.test("account uses the authenticated app shell, not the standalone auth entry shell", () => { + assertEquals(String(isAuthPage("/account")), "false"); + assertEquals(String(isPublicPage("/account")), "false"); + for (const path of ["/login", "/register", "/activate", "/login/device"]) { + assertEquals(String(isAuthPage(path)), "true", path); + assertEquals(String(isPublicPage(path)), "true", path); + } +}); Deno.test("return destination preserves query and fragment only on known app screens", () => { for ( diff --git a/web/workspace/src/lib/workspace/auth/routes.ts b/web/workspace/src/lib/workspace/auth/routes.ts index 5324ee5a6..892a31e6a 100644 --- a/web/workspace/src/lib/workspace/auth/routes.ts +++ b/web/workspace/src/lib/workspace/auth/routes.ts @@ -80,8 +80,9 @@ export function isPublicPage(path: string): boolean { .includes(path); } +// 認証入口は独立したshellを使う。本人用/accountは通常のナビゲーションを残す。 export function isAuthPage(path: string): boolean { - return ["/login", "/register", "/account", "/activate", "/login/device"] + return ["/login", "/register", "/activate", "/login/device"] .includes(path); } diff --git a/web/workspace/src/lib/workspace/console/worker-console.ui.test.ts b/web/workspace/src/lib/workspace/console/worker-console.ui.test.ts index 84b9d0030..366b41a1a 100644 --- a/web/workspace/src/lib/workspace/console/worker-console.ui.test.ts +++ b/web/workspace/src/lib/workspace/console/worker-console.ui.test.ts @@ -1344,7 +1344,7 @@ Deno.test("Root chrome owns global navigation and scoped override slots", async globalNavSections.includes("workspace.display_name") && globalNavSections.includes("workspaceHref(workspace.workspace_id)") && rootLayout.includes("observeDeferred(() => data.deferredCatalog") && - rootLayout.includes("workspaces={catalog.data?.accessibleWorkspaces ?? null}") && + rootLayout.includes("workspaces={page.url.pathname === '/' ? null : catalog.data?.accessibleWorkspaces ?? null}") && rootLayout.includes("workspaceError={catalog.data?.workspaceCatalogError}") && rootLayoutLoad.includes("deferredCatalog: settle(") && rootLayoutLoad.includes("listWorkspaces(fetch)") && diff --git a/web/workspace/src/lib/workspace/sidebar/GlobalNavSections.svelte b/web/workspace/src/lib/workspace/sidebar/GlobalNavSections.svelte index 059c3ae44..6ef8f5ba7 100644 --- a/web/workspace/src/lib/workspace/sidebar/GlobalNavSections.svelte +++ b/web/workspace/src/lib/workspace/sidebar/GlobalNavSections.svelte @@ -1,7 +1,7 @@