diff --git a/apps/console/src/components/OrganizationErrorBoundary.tsx b/apps/console/src/components/OrganizationErrorBoundary.tsx
index 9d6e0b6a9..ee023d349 100644
--- a/apps/console/src/components/OrganizationErrorBoundary.tsx
+++ b/apps/console/src/components/OrganizationErrorBoundary.tsx
@@ -1,5 +1,5 @@
import { AssumptionRequiredError, UnAuthenticatedError } from "@probo/relay";
-import { Navigate, useRouteError } from "react-router";
+import { Navigate, useLocation, useRouteError } from "react-router";
import { useOrganizationId } from "#/hooks/useOrganizationId";
@@ -8,17 +8,18 @@ import { PageError } from "./PageError";
export function OrganizationErrorBoundary() {
const error = useRouteError();
const organizationId = useOrganizationId();
+ const location = useLocation();
- const search = new URLSearchParams([
- ["organization-id", organizationId],
- ]);
+ const search = new URLSearchParams();
- if (window.location.href !== window.location.origin) {
+ if (location.pathname !== "/" || location.search !== "") {
search.set("continue", window.location.href);
}
+ const queryString = search.toString();
+
if (error instanceof UnAuthenticatedError) {
- return ;
+ return ;
}
if (error instanceof AssumptionRequiredError) {
diff --git a/apps/console/src/components/RootErrorBoundary.tsx b/apps/console/src/components/RootErrorBoundary.tsx
index 1f2354559..727a9b210 100644
--- a/apps/console/src/components/RootErrorBoundary.tsx
+++ b/apps/console/src/components/RootErrorBoundary.tsx
@@ -1,21 +1,25 @@
import { UnAuthenticatedError } from "@probo/relay";
-import { Navigate, useRouteError } from "react-router";
+import { Navigate, useLocation, useRouteError } from "react-router";
import { PageError } from "./PageError";
export function RootErrorBoundary() {
const error = useRouteError();
+ const location = useLocation();
const search = new URLSearchParams();
- if (window.location.href !== window.location.origin) {
+
+ if (location.pathname !== "/" || location.search !== "") {
search.set("continue", window.location.href);
}
+ const queryString = search.toString();
+
if (error instanceof UnAuthenticatedError) {
return (
);
diff --git a/apps/console/src/pages/iam/auth/sign-in/PasswordSignInPage.tsx b/apps/console/src/pages/iam/auth/sign-in/PasswordSignInPage.tsx
index ee561f996..651ff8333 100644
--- a/apps/console/src/pages/iam/auth/sign-in/PasswordSignInPage.tsx
+++ b/apps/console/src/pages/iam/auth/sign-in/PasswordSignInPage.tsx
@@ -3,7 +3,7 @@ import { useTranslate } from "@probo/i18n";
import { Button, Field, IconChevronLeft, useToast } from "@probo/ui";
import type { FormEventHandler } from "react";
import { useMutation } from "react-relay";
-import { Link, useLocation, useSearchParams } from "react-router";
+import { Link, matchPath, useLocation, useSearchParams } from "react-router";
import { graphql } from "relay-runtime";
import type { PasswordSignInPageMutation } from "#/__generated__/iam/PasswordSignInPageMutation.graphql";
@@ -37,7 +37,7 @@ export default function PasswordSignInPage() {
if (!emailValue || !passwordValue) return;
const continueUrlParam = searchParams.get("continue");
- let safeContinueUrl: string;
+ let safeContinueUrl: URL;
if (continueUrlParam) {
let continueUrl: URL;
try {
@@ -45,18 +45,23 @@ export default function PasswordSignInPage() {
} catch {
continueUrl = new URL(window.location.origin);
}
- safeContinueUrl = window.location.origin + continueUrl.pathname + continueUrl.search;
+ safeContinueUrl = new URL(continueUrl.pathname + continueUrl.search, window.location.origin);
} else {
- safeContinueUrl = window.location.origin;
+ safeContinueUrl = new URL(window.location.origin);
}
+ const match = matchPath(
+ { path: "/organizations/:organizationId", caseSensitive: false, end: false },
+ safeContinueUrl.pathname,
+ );
+
signIn({
variables: {
input: {
email: emailValue,
password: passwordValue,
// Assume when signing in
- organizationId: searchParams.get("organization-id"),
+ organizationId: match && match.params.organizationId,
},
},
onCompleted: (_, error) => {
@@ -73,7 +78,7 @@ export default function PasswordSignInPage() {
return;
}
- window.location.href = safeContinueUrl;
+ window.location.href = safeContinueUrl.href;
},
onError: (e) => {
toast({