@@ -1,22 +1,23 @@
|
|||||||
|
import { useMemo } from "react";
|
||||||
import { useSearchParams } from "react-router";
|
import { useSearchParams } from "react-router";
|
||||||
|
|
||||||
export function useSafeContinueUrl(fallbackUrl?: URL): URL {
|
export function useSafeContinueUrl(fallback?: string): URL {
|
||||||
fallbackUrl = new URL(fallbackUrl ?? window.location.origin, window.location.origin);
|
|
||||||
const [searchParams] = useSearchParams();
|
const [searchParams] = useSearchParams();
|
||||||
|
|
||||||
const continueUrlParam = searchParams.get("continue");
|
const continueUrlParam = searchParams.get("continue");
|
||||||
let safeContinueUrl: URL;
|
const safeContinueUrl = useMemo(() => {
|
||||||
if (continueUrlParam) {
|
if (continueUrlParam) {
|
||||||
let continueUrl: URL;
|
let continueUrl: URL;
|
||||||
try {
|
try {
|
||||||
continueUrl = new URL(continueUrlParam, window.location.origin);
|
continueUrl = new URL(continueUrlParam, window.location.origin);
|
||||||
} catch {
|
} catch {
|
||||||
continueUrl = fallbackUrl;
|
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);
|
}, [continueUrlParam, fallback]);
|
||||||
} else {
|
|
||||||
safeContinueUrl = fallbackUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
return safeContinueUrl;
|
return safeContinueUrl;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { usePageTitle } from "@probo/hooks";
|
|||||||
import { useTranslate } from "@probo/i18n";
|
import { useTranslate } from "@probo/i18n";
|
||||||
import { Button, Field, useToast } from "@probo/ui";
|
import { Button, Field, useToast } from "@probo/ui";
|
||||||
import { useMutation } from "react-relay";
|
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 { graphql } from "relay-runtime";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
|
|
||||||
@@ -27,7 +27,6 @@ export default function CreatePasswordPage() {
|
|||||||
const { toast } = useToast();
|
const { toast } = useToast();
|
||||||
const [searchParams] = useSearchParams();
|
const [searchParams] = useSearchParams();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const location = useLocation();
|
|
||||||
|
|
||||||
usePageTitle(__("Create Password"));
|
usePageTitle(__("Create Password"));
|
||||||
|
|
||||||
@@ -62,9 +61,11 @@ export default function CreatePasswordPage() {
|
|||||||
description: __("Account created successfully"),
|
description: __("Account created successfully"),
|
||||||
variant: "success",
|
variant: "success",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
searchParams.delete("token");
|
||||||
void navigate({
|
void navigate({
|
||||||
pathname: "/auth/login",
|
pathname: "/auth/login",
|
||||||
search: location.search,
|
search: "?" + searchParams.toString(),
|
||||||
}, {
|
}, {
|
||||||
replace: true,
|
replace: true,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -49,9 +49,7 @@ export function AssumePage(props: { queryRef: PreloadedQuery<AssumePageQuery> })
|
|||||||
const [searchParams] = useSearchParams();
|
const [searchParams] = useSearchParams();
|
||||||
const { __ } = useTranslate();
|
const { __ } = useTranslate();
|
||||||
|
|
||||||
const safeContinueUrl = useSafeContinueUrl(
|
const safeContinueUrl = useSafeContinueUrl(`/organizations/${organizationId}`);
|
||||||
new URL(window.location.origin + `/organizations/${organizationId}`),
|
|
||||||
);
|
|
||||||
|
|
||||||
const { viewer } = usePreloadedQuery<AssumePageQuery>(assumePageQuery, queryRef);
|
const { viewer } = usePreloadedQuery<AssumePageQuery>(assumePageQuery, queryRef);
|
||||||
const [assumeOrganizationSession] = useMutation<AssumePageMutation>(assumeMutation);
|
const [assumeOrganizationSession] = useMutation<AssumePageMutation>(assumeMutation);
|
||||||
|
|||||||
Reference in New Issue
Block a user