From 8acb1b50de40ec4205cf88138f2bbaca2a78ef74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BE=9D=E7=91=AA=E8=B2=93?= Date: Sun, 8 Mar 2026 10:44:53 +0800 Subject: [PATCH] Persist relative return-to path for post-login redirect Co-Authored-By: Codex --- src/views/MainContainer.vue | 5 +++-- tests/views/MainContainerGuard.test.js | 11 +++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/views/MainContainer.vue b/src/views/MainContainer.vue index e657c80..363fa7b 100644 --- a/src/views/MainContainer.vue +++ b/src/views/MainContainer.vue @@ -49,6 +49,7 @@ export default { // } async beforeRouteEnter(to, from, next) { const loginStore = useLoginStore(); + const relativeReturnTo = `${window.location.pathname}${window.location.search}${window.location.hash}`; if (!getCookie("isLuciaLoggedIn")) { if (getCookie('luciaRefreshToken')) { @@ -61,7 +62,7 @@ export default { next({ path: '/login', query: { - 'return-to': btoa(window.location.href), + 'return-to': btoa(relativeReturnTo), } }); } @@ -69,7 +70,7 @@ export default { next({ path: '/login', query: { - 'return-to': btoa(window.location.href), + 'return-to': btoa(relativeReturnTo), } }); } diff --git a/tests/views/MainContainerGuard.test.js b/tests/views/MainContainerGuard.test.js index 0d22fc0..4f8c31e 100644 --- a/tests/views/MainContainerGuard.test.js +++ b/tests/views/MainContainerGuard.test.js @@ -91,4 +91,15 @@ describe('MainContainer beforeRouteEnter', () => { expect(next).toHaveBeenCalled(); }); + + it('stores a relative return-to path when redirecting to login', async () => { + window.history.replaceState({}, '', '/discover/log/1/map?view=summary#node-2'); + + await callGuard(); + + const redirectArg = next.mock.calls[0][0]; + const returnTo = redirectArg.query['return-to']; + + expect(atob(returnTo)).toBe('/discover/log/1/map?view=summary#node-2'); + }); });