fix(auth): prevent SetupPage remount from wiping freshly-set auth token (#1481)

After #1470 moved routing into react-router, SetupPage is rendered at two
different tree positions (top-level guard + /setup Route). When register
success flushSync-sets `user`, the top-level guard stops matching and the
Route-level SetupPage mounts as a new instance, re-running its cleanup
useEffect and removing the auth_token that handlePostAuthSuccess just wrote.
Subsequent requests 401 and bounce the user back to /login.

Redirect /setup to /welcome when user is already set so SetupPage is never
re-mounted during the auth transition.
This commit is contained in:
Lance
2026-04-17 11:17:17 +08:00
committed by GitHub
parent 117d2f7fd4
commit 0a1a2923dc
+3 -1
View File
@@ -439,7 +439,9 @@ export function AppRoutes() {
<Route <Route
path={ROUTES.setup} path={ROUTES.setup}
element={ element={
systemConfig?.initialized ? ( user ? (
<Navigate to={ROUTES.welcome} replace />
) : systemConfig?.initialized ? (
<Navigate to={ROUTES.login} replace /> <Navigate to={ROUTES.login} replace />
) : ( ) : (
<SetupPage /> <SetupPage />