From 13450ff150a11f111cf584a60e88885006422e5f Mon Sep 17 00:00:00 2001 From: Piyush Gupta Date: Wed, 19 Nov 2025 19:22:55 +0530 Subject: [PATCH] fix: routing in admin pages --- frontend/src/components/auth/TeamInviteStep.tsx | 2 +- .../organization/CreateOrgModal/CreateOrgModal.tsx | 3 ++- frontend/src/layouts/AdminLayout/AdminNavBar.tsx | 4 +++- .../components/NavBar/NewSubOrganizationForm.tsx | 4 ++-- frontend/src/pages/admin/layout.tsx | 3 ++- .../pages/auth/SignUpInvitePage/SignUpInvitePage.tsx | 3 ++- frontend/src/pages/auth/SignUpPage/SignUpPage.tsx | 2 +- .../components/UserInfoSSOStep/UserInfoSSOStep.tsx | 3 ++- .../ProjectsPage/components/AllProjectView.tsx | 11 +++++++++-- .../DeleteProjectSection/DeleteProjectSection.tsx | 6 ++++-- frontend/src/pages/public/ErrorPage/ErrorPage.tsx | 2 +- .../ErrorPage/components/ProjectAccessError.tsx | 4 ++-- .../src/pages/public/NotFoundPage/NotFoundPage.tsx | 2 +- .../PersonalSettingsPage/PersonalSettingsPage.tsx | 5 +---- 14 files changed, 33 insertions(+), 21 deletions(-) diff --git a/frontend/src/components/auth/TeamInviteStep.tsx b/frontend/src/components/auth/TeamInviteStep.tsx index ccb1e6f57..57397d208 100644 --- a/frontend/src/components/auth/TeamInviteStep.tsx +++ b/frontend/src/components/auth/TeamInviteStep.tsx @@ -22,7 +22,7 @@ export default function TeamInviteStep(): JSX.Element { // Redirect user to the getting started page const redirectToHome = async () => { - navigate({ to: "/organization/projects" as const }); + navigate({ to: "/" as const }); }; const inviteUsers = async ({ emails: inviteEmails }: { emails: string }) => { diff --git a/frontend/src/components/organization/CreateOrgModal/CreateOrgModal.tsx b/frontend/src/components/organization/CreateOrgModal/CreateOrgModal.tsx index 84931f84a..1f0d79ef6 100644 --- a/frontend/src/components/organization/CreateOrgModal/CreateOrgModal.tsx +++ b/frontend/src/components/organization/CreateOrgModal/CreateOrgModal.tsx @@ -57,7 +57,8 @@ export const CreateOrgModal: FC = ({ isOpen, onClose }) => }); navigate({ - to: "/organization/projects" + to: "/organizations/$orgId/projects", + params: { orgId: organization.id } }); localStorage.setItem("orgData.id", organization.id); diff --git a/frontend/src/layouts/AdminLayout/AdminNavBar.tsx b/frontend/src/layouts/AdminLayout/AdminNavBar.tsx index 49cc1edf9..791a15a10 100644 --- a/frontend/src/layouts/AdminLayout/AdminNavBar.tsx +++ b/frontend/src/layouts/AdminLayout/AdminNavBar.tsx @@ -14,6 +14,7 @@ import { Link, useMatchRoute } from "@tanstack/react-router"; import { motion } from "framer-motion"; import { Tab, TabList, Tabs, Tooltip } from "@app/components/v2"; +import { useOrganization } from "@app/context"; const generalTabs = [ { @@ -60,6 +61,7 @@ const generalTabs = [ export const AdminNavBar = () => { const matchRoute = useMatchRoute(); + const { currentOrg } = useOrganization(); return (
@@ -74,7 +76,7 @@ export const AdminNavBar = () => { - + diff --git a/frontend/src/layouts/OrganizationLayout/components/NavBar/NewSubOrganizationForm.tsx b/frontend/src/layouts/OrganizationLayout/components/NavBar/NewSubOrganizationForm.tsx index bfea2e788..dbaa6d833 100644 --- a/frontend/src/layouts/OrganizationLayout/components/NavBar/NewSubOrganizationForm.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/NavBar/NewSubOrganizationForm.tsx @@ -47,8 +47,8 @@ export const NewSubOrganizationForm = ({ onClose }: ContentProps) => { onClose(); navigate({ - to: "/organization/projects", - search: (prev) => ({ ...prev, subOrganization: organization.name }) + to: "/organizations/$orgId/projects", + params: { orgId: organization.id } }); await router.invalidate({ sync: true }).catch(() => null); }; diff --git a/frontend/src/pages/admin/layout.tsx b/frontend/src/pages/admin/layout.tsx index 36ff5cf5e..cfec214d7 100644 --- a/frontend/src/pages/admin/layout.tsx +++ b/frontend/src/pages/admin/layout.tsx @@ -7,7 +7,8 @@ export const Route = createFileRoute("/_authenticate/_inject-org-details/admin/_ beforeLoad: ({ context }) => { if (!context.user.superAdmin) { throw redirect({ - to: "/organization/projects" + to: "/organizations/$orgId/projects", + params: { orgId: context.organizationId } }); } } diff --git a/frontend/src/pages/auth/SignUpInvitePage/SignUpInvitePage.tsx b/frontend/src/pages/auth/SignUpInvitePage/SignUpInvitePage.tsx index ce873f70e..671de63a8 100644 --- a/frontend/src/pages/auth/SignUpInvitePage/SignUpInvitePage.tsx +++ b/frontend/src/pages/auth/SignUpInvitePage/SignUpInvitePage.tsx @@ -122,7 +122,8 @@ export const SignupInvitePage = () => { localStorage.setItem("orgData.id", orgId); navigate({ - to: "/organization/projects" + to: "/organizations/$orgId/projects", + params: { orgId } }); }; diff --git a/frontend/src/pages/auth/SignUpPage/SignUpPage.tsx b/frontend/src/pages/auth/SignUpPage/SignUpPage.tsx index df5f64d40..c1405dfbf 100644 --- a/frontend/src/pages/auth/SignUpPage/SignUpPage.tsx +++ b/frontend/src/pages/auth/SignUpPage/SignUpPage.tsx @@ -72,7 +72,7 @@ export const SignUpPage = () => { if (!serverDetails?.emailConfigured && step === 4) { navigate({ - to: "/organization/projects" + to: "/" }); } })(); diff --git a/frontend/src/pages/auth/SignUpSsoPage/components/UserInfoSSOStep/UserInfoSSOStep.tsx b/frontend/src/pages/auth/SignUpSsoPage/components/UserInfoSSOStep/UserInfoSSOStep.tsx index 1555bd255..e5ca08df4 100644 --- a/frontend/src/pages/auth/SignUpSsoPage/components/UserInfoSSOStep/UserInfoSSOStep.tsx +++ b/frontend/src/pages/auth/SignUpSsoPage/components/UserInfoSSOStep/UserInfoSSOStep.tsx @@ -129,7 +129,8 @@ export const UserInfoSSOStep = ({ localStorage.setItem("orgData.id", orgId); navigate({ - to: "/organization/projects" + to: "/organizations/$orgId/projects", + params: { orgId } }); } catch (error) { setIsLoading(false); diff --git a/frontend/src/pages/organization/ProjectsPage/components/AllProjectView.tsx b/frontend/src/pages/organization/ProjectsPage/components/AllProjectView.tsx index e6331bfe0..d775f256a 100644 --- a/frontend/src/pages/organization/ProjectsPage/components/AllProjectView.tsx +++ b/frontend/src/pages/organization/ProjectsPage/components/AllProjectView.tsx @@ -101,7 +101,8 @@ export const AllProjectView = ({ const handleAccessProject = async ( type: ProjectType, projectId: string, - environments: ProjectEnv[] + environments: ProjectEnv[], + orgId: string ) => { await orgAdminAccessProject.mutateAsync({ projectId @@ -109,6 +110,7 @@ export const AllProjectView = ({ await navigate({ to: getProjectHomePage(type, environments), params: { + orgId, projectId } }); @@ -320,7 +322,12 @@ export const AllProjectView = ({ onClick={(e) => { e.stopPropagation(); e.preventDefault(); - handleAccessProject(workspace.type, workspace.id, workspace.environments); + handleAccessProject( + workspace.type, + workspace.id, + workspace.environments, + workspace.orgId + ); }} disabled={ orgAdminAccessProject.variables?.projectId === workspace.id && diff --git a/frontend/src/pages/project/SettingsPage/components/DeleteProjectSection/DeleteProjectSection.tsx b/frontend/src/pages/project/SettingsPage/components/DeleteProjectSection/DeleteProjectSection.tsx index 58db07484..8e3290563 100644 --- a/frontend/src/pages/project/SettingsPage/components/DeleteProjectSection/DeleteProjectSection.tsx +++ b/frontend/src/pages/project/SettingsPage/components/DeleteProjectSection/DeleteProjectSection.tsx @@ -65,7 +65,8 @@ export const DeleteProjectSection = () => { }); navigate({ - to: "/organization/projects" + to: "/organizations/$orgId/projects", + params: { orgId: currentOrg.id } }); handlePopUpClose("deleteWorkspace"); } finally { @@ -110,7 +111,8 @@ export const DeleteProjectSection = () => { }); navigate({ - to: "/organization/projects" + to: "/organizations/$orgId/projects", + params: { orgId: currentOrg.id } }); } finally { setIsLeaving.off(); diff --git a/frontend/src/pages/public/ErrorPage/ErrorPage.tsx b/frontend/src/pages/public/ErrorPage/ErrorPage.tsx index f865d2940..4bc74b6c3 100644 --- a/frontend/src/pages/public/ErrorPage/ErrorPage.tsx +++ b/frontend/src/pages/public/ErrorPage/ErrorPage.tsx @@ -41,7 +41,7 @@ export const ErrorPage = ({ error }: ErrorComponentProps) => { {" "} if the issue persists.

- +