From 38a0f280940ada93057b03e99ecf1e9e5906d5d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89mile=20R=C3=A9?= Date: Wed, 11 Mar 2026 15:57:35 +0400 Subject: [PATCH] Misc fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Émile Ré --- apps/console/src/hooks/useSafeContinueUrl.ts | 27 ++++++++++--------- .../src/pages/iam/auth/CreatePasswordPage.tsx | 7 ++--- .../pages/iam/organizations/AssumePage.tsx | 4 +-- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/apps/console/src/hooks/useSafeContinueUrl.ts b/apps/console/src/hooks/useSafeContinueUrl.ts index 808a94cbe..b2ceb49d7 100644 --- a/apps/console/src/hooks/useSafeContinueUrl.ts +++ b/apps/console/src/hooks/useSafeContinueUrl.ts @@ -1,22 +1,23 @@ +import { useMemo } from "react"; import { useSearchParams } from "react-router"; -export function useSafeContinueUrl(fallbackUrl?: URL): URL { - fallbackUrl = new URL(fallbackUrl ?? window.location.origin, window.location.origin); +export function useSafeContinueUrl(fallback?: string): URL { const [searchParams] = useSearchParams(); const continueUrlParam = searchParams.get("continue"); - let safeContinueUrl: URL; - if (continueUrlParam) { - let continueUrl: URL; - try { - continueUrl = new URL(continueUrlParam, window.location.origin); - } catch { - continueUrl = fallbackUrl; + const safeContinueUrl = useMemo(() => { + if (continueUrlParam) { + let continueUrl: URL; + try { + continueUrl = new URL(continueUrlParam, window.location.origin); + } catch { + continueUrl = new URL(fallback ?? window.location.origin, window.location.origin); + } + return new URL(continueUrl.pathname + continueUrl.search, window.location.origin); + } else { + return new URL(fallback ?? window.location.origin, window.location.origin); } - safeContinueUrl = new URL(continueUrl.pathname + continueUrl.search, window.location.origin); - } else { - safeContinueUrl = fallbackUrl; - } + }, [continueUrlParam, fallback]); return safeContinueUrl; } diff --git a/apps/console/src/pages/iam/auth/CreatePasswordPage.tsx b/apps/console/src/pages/iam/auth/CreatePasswordPage.tsx index c03918b5e..fe9c04508 100644 --- a/apps/console/src/pages/iam/auth/CreatePasswordPage.tsx +++ b/apps/console/src/pages/iam/auth/CreatePasswordPage.tsx @@ -3,7 +3,7 @@ import { usePageTitle } from "@probo/hooks"; import { useTranslate } from "@probo/i18n"; import { Button, Field, useToast } from "@probo/ui"; import { useMutation } from "react-relay"; -import { Link, useLocation, useNavigate, useSearchParams } from "react-router"; +import { Link, useNavigate, useSearchParams } from "react-router"; import { graphql } from "relay-runtime"; import { z } from "zod"; @@ -27,7 +27,6 @@ export default function CreatePasswordPage() { const { toast } = useToast(); const [searchParams] = useSearchParams(); const navigate = useNavigate(); - const location = useLocation(); usePageTitle(__("Create Password")); @@ -62,9 +61,11 @@ export default function CreatePasswordPage() { description: __("Account created successfully"), variant: "success", }); + + searchParams.delete("token"); void navigate({ pathname: "/auth/login", - search: location.search, + search: "?" + searchParams.toString(), }, { replace: true, }); diff --git a/apps/console/src/pages/iam/organizations/AssumePage.tsx b/apps/console/src/pages/iam/organizations/AssumePage.tsx index 057facb47..2045921ac 100644 --- a/apps/console/src/pages/iam/organizations/AssumePage.tsx +++ b/apps/console/src/pages/iam/organizations/AssumePage.tsx @@ -49,9 +49,7 @@ export function AssumePage(props: { queryRef: PreloadedQuery }) const [searchParams] = useSearchParams(); const { __ } = useTranslate(); - const safeContinueUrl = useSafeContinueUrl( - new URL(window.location.origin + `/organizations/${organizationId}`), - ); + const safeContinueUrl = useSafeContinueUrl(`/organizations/${organizationId}`); const { viewer } = usePreloadedQuery(assumePageQuery, queryRef); const [assumeOrganizationSession] = useMutation(assumeMutation);