diff --git a/frontend/src/components/projects/NewProjectModal.tsx b/frontend/src/components/projects/NewProjectModal.tsx
index 663d6a0b7..d9887a929 100644
--- a/frontend/src/components/projects/NewProjectModal.tsx
+++ b/frontend/src/components/projects/NewProjectModal.tsx
@@ -157,7 +157,7 @@ const NewProjectForm = ({ onOpenChange }: NewProjectFormProps) => {
onOpenChange(false);
navigate({
to: getProjectHomePage(project.type, project.environments),
- params: { projectId: project.id }
+ params: { projectId: project.id, orgId: currentOrg.id }
});
};
const onSubmit = handleSubmit((data) => {
diff --git a/frontend/src/layouts/ProjectLayout/components/ProjectSelect/ProjectSelect.tsx b/frontend/src/layouts/ProjectLayout/components/ProjectSelect/ProjectSelect.tsx
index 08fdceb58..976bda52a 100644
--- a/frontend/src/layouts/ProjectLayout/components/ProjectSelect/ProjectSelect.tsx
+++ b/frontend/src/layouts/ProjectLayout/components/ProjectSelect/ProjectSelect.tsx
@@ -97,7 +97,8 @@ export const ProjectSelect = () => {
@@ -154,7 +155,8 @@ export const ProjectSelect = () => {
const url = linkOptions({
to: getProjectHomePage(workspace.type, workspace.environments),
params: {
- projectId: workspace.id
+ projectId: workspace.id,
+ orgId: workspace.orgId
},
search: {
subOrganization: currentOrg?.subOrganization?.name
diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificateManagePkiSyncsModal.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificateManagePkiSyncsModal.tsx
index db3e6c197..9d928ec8d 100644
--- a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificateManagePkiSyncsModal.tsx
+++ b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificateManagePkiSyncsModal.tsx
@@ -20,7 +20,7 @@ import {
Tr
} from "@app/components/v2";
import { ROUTE_PATHS } from "@app/const/routes";
-import { useProject } from "@app/context";
+import { useOrganization, useProject } from "@app/context";
import {
PkiSync,
useAddCertificatesToPkiSync,
@@ -49,6 +49,7 @@ export const CertificateManagePkiSyncsModal = ({ popUp, handlePopUpToggle }: Pro
const [currentPage, setCurrentPage] = useState(1);
const [searchTerm, setSearchTerm] = useState("");
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
const navigate = useNavigate();
const { certificateId, commonName } = popUp.data || {};
@@ -92,6 +93,7 @@ export const CertificateManagePkiSyncsModal = ({ popUp, handlePopUpToggle }: Pro
navigate({
to: ROUTE_PATHS.CertManager.IntegrationsListPage.path,
params: {
+ orgId: currentOrg.id,
projectId: currentProject.id
},
search: {
diff --git a/frontend/src/pages/cert-manager/IntegrationsListPage/IntegrationsListPage.tsx b/frontend/src/pages/cert-manager/IntegrationsListPage/IntegrationsListPage.tsx
index 8358c28a3..9387074eb 100644
--- a/frontend/src/pages/cert-manager/IntegrationsListPage/IntegrationsListPage.tsx
+++ b/frontend/src/pages/cert-manager/IntegrationsListPage/IntegrationsListPage.tsx
@@ -5,7 +5,7 @@ import { useNavigate, useSearch } from "@tanstack/react-router";
import { ProjectPermissionCan } from "@app/components/permissions";
import { PageHeader, Tab, TabList, TabPanel, Tabs } from "@app/components/v2";
import { ROUTE_PATHS } from "@app/const/routes";
-import { ProjectPermissionSub, useProject } from "@app/context";
+import { ProjectPermissionSub, useOrganization, useProject } from "@app/context";
import { ProjectPermissionPkiSyncActions } from "@app/context/ProjectPermissionContext/types";
import { ProjectType } from "@app/hooks/api/projects/types";
import { IntegrationsListPageTabs } from "@app/types/integrations";
@@ -14,6 +14,7 @@ import { PkiSyncsTab } from "./components";
export const IntegrationsListPage = () => {
const navigate = useNavigate();
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
const { t } = useTranslation();
@@ -30,7 +31,8 @@ export const IntegrationsListPage = () => {
selectedTab: tab as IntegrationsListPageTabs
},
params: {
- projectId: currentProject?.id
+ projectId: currentProject?.id,
+ orgId: currentOrg.id
}
});
};
diff --git a/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncTable/PkiSyncRow.tsx b/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncTable/PkiSyncRow.tsx
index 0b2ce65c1..dfc3ce399 100644
--- a/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncTable/PkiSyncRow.tsx
+++ b/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncTable/PkiSyncRow.tsx
@@ -39,7 +39,7 @@ import {
} from "@app/components/v2";
import { Badge } from "@app/components/v3";
import { ROUTE_PATHS } from "@app/const/routes";
-import { ProjectPermissionSub } from "@app/context";
+import { ProjectPermissionSub, useOrganization } from "@app/context";
import { ProjectPermissionPkiSyncActions } from "@app/context/ProjectPermissionContext/types";
import { PKI_SYNC_MAP } from "@app/helpers/pkiSyncs";
import { useToggle } from "@app/hooks";
@@ -82,6 +82,7 @@ export const PkiSyncRow = ({
const { syncOption } = usePkiSyncOption(destination);
+ const { currentOrg } = useOrganization();
const [isIdCopied, setIsIdCopied] = useToggle(false);
const handleCopyId = useCallback(() => {
@@ -127,7 +128,8 @@ export const PkiSyncRow = ({
to: ROUTE_PATHS.CertManager.PkiSyncDetailsByIDPage.path,
params: {
syncId: id,
- projectId
+ projectId,
+ orgId: currentOrg.id
}
});
}}
diff --git a/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncsTab.tsx b/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncsTab.tsx
index da0bc180f..677a2b2a5 100644
--- a/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncsTab.tsx
+++ b/frontend/src/pages/cert-manager/IntegrationsListPage/components/PkiSyncsTab/PkiSyncsTab.tsx
@@ -8,7 +8,7 @@ import { CreatePkiSyncModal } from "@app/components/pki-syncs";
import { Button, Spinner } from "@app/components/v2";
import { DocumentationLinkBadge } from "@app/components/v3";
import { ROUTE_PATHS } from "@app/const/routes";
-import { ProjectPermissionSub, useProject } from "@app/context";
+import { ProjectPermissionSub, useOrganization, useProject } from "@app/context";
import { ProjectPermissionPkiSyncActions } from "@app/context/ProjectPermissionContext/types";
import { usePopUp } from "@app/hooks";
import { useListPkiSyncs } from "@app/hooks/api/pkiSyncs";
@@ -26,18 +26,19 @@ export const PkiSyncsTab = () => {
const navigate = useNavigate();
const { currentProject } = useProject();
-
+ const { currentOrg } = useOrganization();
const memoizedSearch = useMemo(() => search, [search]);
const navigateToBase = useCallback(() => {
navigate({
to: ROUTE_PATHS.CertManager.IntegrationsListPage.path,
params: {
- projectId: currentProject?.id
+ projectId: currentProject?.id,
+ orgId: currentOrg.id
},
search: memoizedSearch
});
- }, [navigate, currentProject?.id, memoizedSearch]);
+ }, [navigate, currentProject?.id, currentOrg.id, memoizedSearch]);
useEffect(() => {
if (!addSync) return;
@@ -59,7 +60,7 @@ export const PkiSyncsTab = () => {
handlePopUpOpen("addSync", { destination: parsedData.destination, initialData });
navigate({
to: ROUTE_PATHS.CertManager.IntegrationsListPage.path,
- params: { projectId: currentProject?.id },
+ params: { projectId: currentProject?.id, orgId: currentOrg.id },
search: { selectedTab: IntegrationsListPageTabs.PkiSyncs },
replace: true
});
@@ -79,7 +80,8 @@ export const PkiSyncsTab = () => {
connectionId,
connectionName,
navigate,
- currentProject?.id
+ currentProject?.id,
+ currentOrg.id
]);
const { data: pkiSyncs = [], isPending: isPkiSyncsPending } = useListPkiSyncs(
diff --git a/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/PkiSyncDetailsByIDPage.tsx b/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/PkiSyncDetailsByIDPage.tsx
index b1b1b2836..7a63bdf2e 100644
--- a/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/PkiSyncDetailsByIDPage.tsx
+++ b/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/PkiSyncDetailsByIDPage.tsx
@@ -26,7 +26,7 @@ import {
const PageContent = () => {
const navigate = useNavigate();
- const { syncId, projectId } = useParams({
+ const { syncId, projectId, orgId } = useParams({
from: ROUTE_PATHS.CertManager.PkiSyncDetailsByIDPage.id
});
@@ -77,7 +77,8 @@ const PageContent = () => {
navigate({
to: ROUTE_PATHS.CertManager.IntegrationsListPage.path,
params: {
- projectId
+ projectId,
+ orgId
},
search: {
selectedTab: IntegrationsListPageTabs.PkiSyncs
diff --git a/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncActionTriggers.tsx b/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncActionTriggers.tsx
index 5171b4d95..8277d3345 100644
--- a/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncActionTriggers.tsx
+++ b/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncActionTriggers.tsx
@@ -36,7 +36,7 @@ import {
} from "@app/components/v2";
import { Badge } from "@app/components/v3";
import { ROUTE_PATHS } from "@app/const/routes";
-import { ProjectPermissionSub } from "@app/context";
+import { ProjectPermissionSub, useOrganization } from "@app/context";
import { ProjectPermissionPkiSyncActions } from "@app/context/ProjectPermissionContext/types";
import { PKI_SYNC_MAP } from "@app/helpers/pkiSyncs";
import { usePopUp, useToggle } from "@app/hooks";
@@ -69,6 +69,7 @@ export const PkiSyncActionTriggers = ({ pkiSync }: Props) => {
const updatePkiSyncMutation = useUpdatePkiSync();
const { syncOption } = usePkiSyncOption(destination);
+ const { currentOrg } = useOrganization();
const destinationName = PKI_SYNC_MAP[destination].name;
@@ -287,7 +288,8 @@ export const PkiSyncActionTriggers = ({ pkiSync }: Props) => {
navigate({
to: ROUTE_PATHS.CertManager.IntegrationsListPage.path,
params: {
- projectId
+ projectId,
+ orgId: currentOrg.id
},
search: {
selectedTab: IntegrationsListPageTabs.PkiSyncs
diff --git a/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncAuditLogsSection.tsx b/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncAuditLogsSection.tsx
index 6ef633091..4be7e0b3e 100644
--- a/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncAuditLogsSection.tsx
+++ b/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncAuditLogsSection.tsx
@@ -2,7 +2,7 @@ import { faFingerprint } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Link } from "@tanstack/react-router";
-import { useProject, useSubscription } from "@app/context";
+import { useOrganization, useProject, useSubscription } from "@app/context";
import { EventType } from "@app/hooks/api/auditLogs/enums";
import { TPkiSync } from "@app/hooks/api/pkiSyncs";
import { LogsSection } from "@app/pages/organization/AuditLogsPage/components/LogsSection";
@@ -20,7 +20,7 @@ type Props = {
export const PkiSyncAuditLogsSection = ({ pkiSync }: Props) => {
const { subscription } = useSubscription();
const { currentProject } = useProject();
-
+ const { currentOrg } = useOrganization();
const auditLogsRetentionDays = subscription?.auditLogsRetentionDays ?? 30;
return (
@@ -53,7 +53,12 @@ export const PkiSyncAuditLogsSection = ({ pkiSync }: Props) => {
Please{" "}
{subscription && subscription.slug !== null ? (
-
+
upgrade your subscription
diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgGroupsTab/components/OrgGroupsSection/OrgGroupsTable.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgGroupsTab/components/OrgGroupsSection/OrgGroupsTable.tsx
index cc6d7c7aa..5b4698ec9 100644
--- a/frontend/src/pages/organization/AccessManagementPage/components/OrgGroupsTab/components/OrgGroupsSection/OrgGroupsTable.tsx
+++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgGroupsTab/components/OrgGroupsSection/OrgGroupsTable.tsx
@@ -235,8 +235,9 @@ export const OrgGroupsTable = ({ handlePopUpOpen }: Props) => {
navigate({
- to: "/organization/groups/$groupId",
+ to: "/organizations/$orgId/groups/$groupId",
params: {
+ orgId,
groupId: id
}
})
@@ -334,8 +335,9 @@ export const OrgGroupsTable = ({ handlePopUpOpen }: Props) => {
icon={}
onClick={() =>
navigate({
- to: "/organization/groups/$groupId",
+ to: "/organizations/$orgId/groups/$groupId",
params: {
+ orgId,
groupId: id
}
})
diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx
index 2f8ce56c5..0c8cfd6bb 100644
--- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx
+++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityTable.tsx
@@ -301,9 +301,10 @@ export const IdentityTable = ({ handlePopUpOpen }: Props) => {
key={`identity-${id}`}
onClick={() =>
navigate({
- to: "/organization/identities/$identityId",
+ to: "/organizations/$orgId/identities/$identityId",
params: {
- identityId: id
+ identityId: id,
+ orgId
}
})
}
@@ -397,9 +398,10 @@ export const IdentityTable = ({ handlePopUpOpen }: Props) => {
onClick={(e) => {
e.stopPropagation();
navigate({
- to: "/organization/identities/$identityId",
+ to: "/organizations/$orgId/identities/$identityId",
params: {
- identityId: id
+ identityId: id,
+ orgId
}
});
}}
diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/MachineAuthTemplateUsagesModal.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/MachineAuthTemplateUsagesModal.tsx
index 909391474..bf6eba63e 100644
--- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/MachineAuthTemplateUsagesModal.tsx
+++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/MachineAuthTemplateUsagesModal.tsx
@@ -61,9 +61,10 @@ export const MachineAuthTemplateUsagesModal = ({
key={`usage-${usage.identityId}`}
onClick={() =>
navigate({
- to: "/organization/identities/$identityId",
+ to: "/organizations/$orgId/identities/$identityId",
params: {
- identityId: usage.identityId
+ identityId: usage.identityId,
+ orgId: organizationId
}
})
}
diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/OrgIdentityLinkForm.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/OrgIdentityLinkForm.tsx
index 24406382e..dde0588de 100644
--- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/OrgIdentityLinkForm.tsx
+++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/OrgIdentityLinkForm.tsx
@@ -64,9 +64,10 @@ export const OrgIdentityLinkForm = ({ onClose }: Props) => {
type: "success"
});
navigate({
- to: "/organization/identities/$identityId",
+ to: "/organizations/$orgId/identities/$identityId",
params: {
- identityId: identity.id
+ identityId: identity.id,
+ orgId: currentOrg.id
}
});
};
diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/OrgIdentityModal.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/OrgIdentityModal.tsx
index 9c54a1e54..dfc496ca8 100644
--- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/OrgIdentityModal.tsx
+++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/OrgIdentityModal.tsx
@@ -155,9 +155,10 @@ export const OrgIdentityModal = ({ popUp, handlePopUpToggle }: Props) => {
handlePopUpToggle("identity", false);
navigate({
- to: "/organization/identities/$identityId",
+ to: "/organizations/$orgId/identities/$identityId",
params: {
- identityId: createdId
+ identityId: createdId,
+ orgId
}
});
}
diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx
index ea0465bb8..d81c0a3eb 100644
--- a/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx
+++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx
@@ -481,9 +481,10 @@ export const OrgMembersTable = ({
className="h-10 w-full cursor-pointer transition-colors duration-100 hover:bg-mineshaft-700"
onClick={() =>
navigate({
- to: "/organization/members/$membershipId" as const,
+ to: "/organizations/$orgId/members/$membershipId" as const,
params: {
- membershipId: orgMembershipId
+ membershipId: orgMembershipId,
+ orgId
}
})
}
@@ -619,9 +620,10 @@ export const OrgMembersTable = ({
onClick={(e) => {
e.stopPropagation();
navigate({
- to: "/organization/members/$membershipId" as const,
+ to: "/organizations/$orgId/members/$membershipId" as const,
params: {
- membershipId: orgMembershipId
+ membershipId: orgMembershipId,
+ orgId
}
});
}}
diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgRoleTabSection/OrgRoleTable.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgRoleTabSection/OrgRoleTable.tsx
index 9579ce6d6..ee3c536e8 100644
--- a/frontend/src/pages/organization/AccessManagementPage/components/OrgRoleTabSection/OrgRoleTable.tsx
+++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgRoleTabSection/OrgRoleTable.tsx
@@ -280,9 +280,10 @@ export const OrgRoleTable = () => {
className="h-10 cursor-pointer transition-colors duration-100 hover:bg-mineshaft-700"
onClick={() =>
navigate({
- to: "/organization/roles/$roleId",
+ to: "/organizations/$orgId/roles/$roleId",
params: {
- roleId: id
+ roleId: id,
+ orgId
}
})
}
@@ -339,9 +340,10 @@ export const OrgRoleTable = () => {
onClick={(e) => {
e.stopPropagation();
navigate({
- to: "/organization/roles/$roleId",
+ to: "/organizations/$orgId/roles/$roleId",
params: {
- roleId: id
+ roleId: id,
+ orgId
}
});
}}
diff --git a/frontend/src/pages/organization/GroupDetailsByIDPage/GroupDetailsByIDPage.tsx b/frontend/src/pages/organization/GroupDetailsByIDPage/GroupDetailsByIDPage.tsx
index e7c517d6c..ebed8fedc 100644
--- a/frontend/src/pages/organization/GroupDetailsByIDPage/GroupDetailsByIDPage.tsx
+++ b/frontend/src/pages/organization/GroupDetailsByIDPage/GroupDetailsByIDPage.tsx
@@ -44,7 +44,7 @@ const Page = () => {
const { data, isPending } = useGetGroupById(groupId);
- const { isSubOrganization } = useOrganization();
+ const { isSubOrganization, currentOrg } = useOrganization();
const { mutateAsync: deleteMutateAsync } = useDeleteGroup();
@@ -62,7 +62,8 @@ const Page = () => {
type: "success"
});
navigate({
- to: "/organization/access-management" as const,
+ to: "/organizations/$orgId/access-management" as const,
+ params: { orgId: currentOrg.id },
search: {
selectedTab: TabSections.Groups
}
@@ -78,7 +79,8 @@ const Page = () => {
{data && (
({
+ context: ({ params }) => ({
breadcrumbs: [
{
label: "Access Control",
- link: linkOptions({ to: "/organization/access-management" })
+ link: linkOptions({
+ to: "/organizations/$orgId/access-management" as const,
+ params
+ })
},
{
label: "groups"
diff --git a/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx b/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx
index 4fdc55f07..1cc37a8e8 100644
--- a/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx
+++ b/frontend/src/pages/organization/IdentityDetailsByIDPage/IdentityDetailsByIDPage.tsx
@@ -61,7 +61,8 @@ const Page = () => {
handlePopUpClose("deleteIdentity");
navigate({
- to: "/organization/access-management",
+ to: "/organizations/$orgId/access-management" as const,
+ params: { orgId },
search: {
selectedTab: OrgAccessControlTabSections.Identities
}
@@ -73,7 +74,8 @@ const Page = () => {
{data && (
({
+ context: ({ params }) => ({
breadcrumbs: [
{
label: "Access Control",
- link: linkOptions({ to: "/organization/access-management" })
+ link: linkOptions({ to: "/organizations/$orgId/access-management" as const, params })
},
{
label: "Identities"
diff --git a/frontend/src/pages/organization/RoleByIDPage/RoleByIDPage.tsx b/frontend/src/pages/organization/RoleByIDPage/RoleByIDPage.tsx
index 78c5393a7..ff3594ef3 100644
--- a/frontend/src/pages/organization/RoleByIDPage/RoleByIDPage.tsx
+++ b/frontend/src/pages/organization/RoleByIDPage/RoleByIDPage.tsx
@@ -56,7 +56,8 @@ export const Page = () => {
handlePopUpClose("deleteOrgRole");
navigate({
- to: "/organization/access-management" as const,
+ to: "/organizations/$orgId/access-management" as const,
+ params: { orgId },
search: {
selectedTab: OrgAccessControlTabSections.Roles
}
@@ -70,7 +71,8 @@ export const Page = () => {
{data && (
{
});
navigate({
- to: "/organization/roles/$roleId",
+ to: "/organizations/$orgId/roles/$roleId" as const,
params: {
+ orgId: role.orgId,
roleId: newRole.id
}
});
diff --git a/frontend/src/pages/organization/RoleByIDPage/components/RoleModal.tsx b/frontend/src/pages/organization/RoleByIDPage/components/RoleModal.tsx
index 73da4f161..f47d5ed2c 100644
--- a/frontend/src/pages/organization/RoleByIDPage/components/RoleModal.tsx
+++ b/frontend/src/pages/organization/RoleByIDPage/components/RoleModal.tsx
@@ -97,8 +97,9 @@ export const RoleModal = ({ popUp, handlePopUpToggle }: Props) => {
handlePopUpToggle("role", false);
navigate({
- to: "/organization/roles/$roleId",
+ to: "/organizations/$orgId/roles/$roleId" as const,
params: {
+ orgId,
roleId: newRole.id
}
});
diff --git a/frontend/src/pages/organization/SecretSharingPage/ShareSecretSection.tsx b/frontend/src/pages/organization/SecretSharingPage/ShareSecretSection.tsx
index 134e341a6..7b8b16860 100644
--- a/frontend/src/pages/organization/SecretSharingPage/ShareSecretSection.tsx
+++ b/frontend/src/pages/organization/SecretSharingPage/ShareSecretSection.tsx
@@ -17,7 +17,7 @@ enum SecretSharingPageTabs {
export const ShareSecretSection = () => {
const navigate = useNavigate();
- const { isSubOrganization } = useOrganization();
+ const { isSubOrganization, currentOrg } = useOrganization();
const { selectedTab } = useSearch({
from: ROUTE_PATHS.Organization.SecretSharing.id
@@ -26,6 +26,7 @@ export const ShareSecretSection = () => {
const updateSelectedTab = (tab: string) => {
navigate({
to: ROUTE_PATHS.Organization.SecretSharing.path,
+ params: { orgId: currentOrg.id },
search: (prev) => ({ ...prev, selectedTab: tab as SecretSharingPageTabs })
});
};
diff --git a/frontend/src/pages/organization/SettingsPage/OauthCallbackPage/OauthCallbackPage.tsx b/frontend/src/pages/organization/SettingsPage/OauthCallbackPage/OauthCallbackPage.tsx
index 5efec93d9..054455e05 100644
--- a/frontend/src/pages/organization/SettingsPage/OauthCallbackPage/OauthCallbackPage.tsx
+++ b/frontend/src/pages/organization/SettingsPage/OauthCallbackPage/OauthCallbackPage.tsx
@@ -57,7 +57,8 @@ export const OAuthCallbackPage = () => {
});
navigate({
- to: ROUTE_PATHS.Organization.SettingsPage.path
+ to: ROUTE_PATHS.Organization.SettingsPage.path,
+ params: { orgId: currentOrg.id }
});
}, []);
diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultConnectionSection.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultConnectionSection.tsx
index aa7765db8..070d9929d 100644
--- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultConnectionSection.tsx
+++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultConnectionSection.tsx
@@ -17,6 +17,7 @@ import {
THead,
Tr
} from "@app/components/v2";
+import { useOrganization } from "@app/context";
import { useListAppConnections } from "@app/hooks/api/appConnections/queries";
import {
useDeleteVaultExternalMigrationConfig,
@@ -33,6 +34,8 @@ export const VaultConnectionSection = () => {
const [configToDelete, setConfigToDelete] = useState
(null);
const { data: configs = [], isPending: isLoadingConfigs } = useGetVaultExternalMigrationConfigs();
+
+ const { currentOrg } = useOrganization();
const { data: appConnections = [] } = useListAppConnections();
const { mutateAsync: deleteConfig } = useDeleteVaultExternalMigrationConfig();
@@ -157,7 +160,8 @@ export const VaultConnectionSection = () => {
Configure namespace-specific connections to enable in-platform migration features. Manage
connections in the{" "}
App Connections
diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgNameChangeSection/SubOrgNameChangeSection.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgNameChangeSection/SubOrgNameChangeSection.tsx
index e08d4d1b5..2a8e932a7 100644
--- a/frontend/src/pages/organization/SettingsPage/components/OrgNameChangeSection/SubOrgNameChangeSection.tsx
+++ b/frontend/src/pages/organization/SettingsPage/components/OrgNameChangeSection/SubOrgNameChangeSection.tsx
@@ -44,7 +44,11 @@ export const SubOrgNameChangeSection = (): JSX.Element => {
subOrgId: currentOrg.id
});
- navigate({ to: "/organization/settings", search: { subOrganization: name } });
+ navigate({
+ to: "/organizations/$orgId/settings",
+ params: { orgId: currentOrg.id },
+ search: { subOrganization: name }
+ });
queryClient.invalidateQueries();
await router.invalidate({ sync: true });
createNotification({
diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/LDAPGroupMapModal.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/LDAPGroupMapModal.tsx
index 31e96a1cb..9687c5d4d 100644
--- a/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/LDAPGroupMapModal.tsx
+++ b/frontend/src/pages/organization/SettingsPage/components/OrgSsoTab/LDAPGroupMapModal.tsx
@@ -263,7 +263,8 @@ export const LDAPGroupMapModal = ({ popUp, handlePopUpOpen, handlePopUpToggle }:
size="sm"
onClick={() =>
navigate({
- to: "/organization/access-management"
+ to: "/organizations/$orgId/access-management",
+ params: { orgId: currentOrg.id }
})
}
>
diff --git a/frontend/src/pages/organization/UserDetailsByIDPage/UserDetailsByIDPage.tsx b/frontend/src/pages/organization/UserDetailsByIDPage/UserDetailsByIDPage.tsx
index 2277e767d..3b26f80f0 100644
--- a/frontend/src/pages/organization/UserDetailsByIDPage/UserDetailsByIDPage.tsx
+++ b/frontend/src/pages/organization/UserDetailsByIDPage/UserDetailsByIDPage.tsx
@@ -91,7 +91,8 @@ const Page = withPermission(
handlePopUpClose("removeMember");
navigate({
- to: "/organization/access-management" as const,
+ to: "/organizations/$orgId/access-management" as const,
+ params: { orgId },
search: {
selectedTab: OrgAccessControlTabSections.Member
}
@@ -103,7 +104,8 @@ const Page = withPermission(
{membership && (
({
+ context: ({ params }) => ({
breadcrumbs: [
{
label: "Access Control",
- link: linkOptions({ to: "/organization/access-management" })
+ link: linkOptions({ to: "/organizations/$orgId/access-management" as const, params })
},
{
label: "Users"
diff --git a/frontend/src/pages/project/AccessControlPage/AccessControlPage.tsx b/frontend/src/pages/project/AccessControlPage/AccessControlPage.tsx
index aaa3a6eb7..84a5376ab 100644
--- a/frontend/src/pages/project/AccessControlPage/AccessControlPage.tsx
+++ b/frontend/src/pages/project/AccessControlPage/AccessControlPage.tsx
@@ -3,7 +3,7 @@ import { useTranslation } from "react-i18next";
import { useNavigate, useSearch } from "@tanstack/react-router";
import { PageHeader, Tab, TabList, TabPanel, Tabs } from "@app/components/v2";
-import { useProject } from "@app/context";
+import { useOrganization, useProject } from "@app/context";
import { getProjectBaseURL } from "@app/helpers/project";
import { ProjectType } from "@app/hooks/api/projects/types";
import { ProjectAccessControlTabs } from "@app/types/project";
@@ -18,6 +18,7 @@ import {
const Page = () => {
const navigate = useNavigate();
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
const selectedTab = useSearch({
strict: false,
@@ -29,6 +30,7 @@ const Page = () => {
to: `${getProjectBaseURL(currentProject.type)}/access-management` as const,
search: (prev) => ({ ...prev, selectedTab: tab }),
params: {
+ orgId: currentOrg.id,
projectId: currentProject.id
}
});
diff --git a/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupModal.tsx b/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupModal.tsx
index f8788762c..17ef73120 100644
--- a/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupModal.tsx
+++ b/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupModal.tsx
@@ -140,7 +140,7 @@ const Content = ({ popUp, handlePopUpToggle }: Props) => {
All groups in your organization have already been added to this project.
-
+
diff --git a/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupsTable.tsx b/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupsTable.tsx
index 3ce5b4062..c3d850c6b 100644
--- a/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupsTable.tsx
+++ b/frontend/src/pages/project/AccessControlPage/components/GroupsTab/components/GroupsSection/GroupsTable.tsx
@@ -32,7 +32,12 @@ import {
Tooltip,
Tr
} from "@app/components/v2";
-import { ProjectPermissionActions, ProjectPermissionSub, useProject } from "@app/context";
+import {
+ ProjectPermissionActions,
+ ProjectPermissionSub,
+ useOrganization,
+ useProject
+} from "@app/context";
import { getProjectBaseURL } from "@app/helpers/project";
import {
getUserTablePreference,
@@ -61,6 +66,7 @@ enum GroupsOrderBy {
}
export const GroupTable = ({ handlePopUpOpen }: Props) => {
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
const navigate = useNavigate();
@@ -161,6 +167,7 @@ export const GroupTable = ({ handlePopUpOpen }: Props) => {
navigate({
to: `${getProjectBaseURL(currentProject.type)}/groups/$groupId` as const,
params: {
+ orgId: currentOrg.id,
projectId: currentProject.id,
groupId: id
}
@@ -171,6 +178,7 @@ export const GroupTable = ({ handlePopUpOpen }: Props) => {
navigate({
to: `${getProjectBaseURL(currentProject.type)}/groups/$groupId` as const,
params: {
+ orgId: currentOrg.id,
projectId: currentProject.id,
groupId: id
}
diff --git a/frontend/src/pages/project/AccessControlPage/components/IdentityTab/IdentityTab.tsx b/frontend/src/pages/project/AccessControlPage/components/IdentityTab/IdentityTab.tsx
index e98633368..72bae83f2 100644
--- a/frontend/src/pages/project/AccessControlPage/components/IdentityTab/IdentityTab.tsx
+++ b/frontend/src/pages/project/AccessControlPage/components/IdentityTab/IdentityTab.tsx
@@ -277,6 +277,7 @@ export const IdentityTab = withProjectPermission(
navigate({
to: `${getProjectBaseURL(currentProject.type)}/identities/$identityId` as const,
params: {
+ orgId: currentOrg.id,
projectId: currentProject.id,
identityId: id
}
@@ -287,6 +288,7 @@ export const IdentityTab = withProjectPermission(
navigate({
to: `${getProjectBaseURL(currentProject.type)}/identities/$identityId` as const,
params: {
+ orgId: currentOrg.id,
projectId: currentProject.id,
identityId: id
}
diff --git a/frontend/src/pages/project/AccessControlPage/components/MembersTab/components/MemberRoleForm/MemberRoleForm.tsx b/frontend/src/pages/project/AccessControlPage/components/MembersTab/components/MemberRoleForm/MemberRoleForm.tsx
index 187e1813a..aa5e9efb1 100644
--- a/frontend/src/pages/project/AccessControlPage/components/MembersTab/components/MemberRoleForm/MemberRoleForm.tsx
+++ b/frontend/src/pages/project/AccessControlPage/components/MembersTab/components/MemberRoleForm/MemberRoleForm.tsx
@@ -1,7 +1,7 @@
import { Link } from "@tanstack/react-router";
import { Alert, AlertDescription } from "@app/components/v2";
-import { useProject } from "@app/context";
+import { useOrganization, useProject } from "@app/context";
import { getProjectBaseURL } from "@app/helpers/project";
import { TWorkspaceUser } from "@app/hooks/api/types";
@@ -12,6 +12,7 @@ type Props = {
onOpenUpgradeModal: (title: string) => void;
};
export const MemberRoleForm = ({ projectMember, onOpenUpgradeModal }: Props) => {
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
return (
@@ -24,6 +25,7 @@ export const MemberRoleForm = ({ projectMember, onOpenUpgradeModal }: Props) =>
{
select: (el) => el.groupId as string
});
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
const { data: groupMembership, isPending } = useGetWorkspaceGroupMembershipDetails(
@@ -42,7 +48,8 @@ const Page = () => {
{
navigate({
to: `${getProjectBaseURL(currentProject.type)}/access-management` as const,
params: {
- projectId
+ projectId,
+ orgId: currentOrg.id
},
search: {
selectedTab: "identities"
@@ -137,7 +138,8 @@ const Page = () => {
{
{(isAllowed) =>
isAllowed ? (
diff --git a/frontend/src/pages/project/MemberDetailsByIDPage/MemberDetailsByIDPage.tsx b/frontend/src/pages/project/MemberDetailsByIDPage/MemberDetailsByIDPage.tsx
index 2c578ea4f..8064f070d 100644
--- a/frontend/src/pages/project/MemberDetailsByIDPage/MemberDetailsByIDPage.tsx
+++ b/frontend/src/pages/project/MemberDetailsByIDPage/MemberDetailsByIDPage.tsx
@@ -95,7 +95,8 @@ export const Page = () => {
navigate({
to: `${getProjectBaseURL(currentProject.type)}/access-management` as const,
params: {
- projectId: currentProject.id
+ projectId: currentProject.id,
+ orgId: currentOrg.id
}
});
handlePopUpClose("removeMember");
@@ -116,7 +117,8 @@ export const Page = () => {
{
select: (el) => el.roleSlug as string
});
const { currentProject } = useProject();
+ const { currentOrg } = useOrganization();
const projectId = currentProject?.id || "";
+ const orgId = currentOrg?.id || "";
const { data } = useGetProjectRoleBySlug(projectId, roleSlug as string);
@@ -68,7 +75,8 @@ const Page = () => {
navigate({
to: `${getProjectBaseURL(currentProject.type)}/access-management` as const,
params: {
- projectId
+ projectId,
+ orgId
},
search: {
selectedTab: ProjectAccessControlTabs.Roles
@@ -87,7 +95,8 @@ const Page = () => {
{
resolver: zodResolver(schema)
});
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
const createRole = useCreateProjectRole();
@@ -83,6 +84,7 @@ const Content = ({ role, onClose }: ContentProps) => {
navigate({
to: `${getProjectBaseURL(currentProject.type)}/roles/$roleSlug` as const,
params: {
+ orgId: currentOrg.id,
roleSlug: newRole.slug,
projectId: currentProject.id
}
diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/RoleModal.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/RoleModal.tsx
index 03525eac5..4fcb246ef 100644
--- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/RoleModal.tsx
+++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/RoleModal.tsx
@@ -6,7 +6,7 @@ import { z } from "zod";
import { createNotification } from "@app/components/notifications";
import { Button, FormControl, Input, Modal, ModalContent } from "@app/components/v2";
-import { useProject } from "@app/context";
+import { useOrganization, useProject } from "@app/context";
import { getProjectBaseURL } from "@app/helpers/project";
import {
useCreateProjectRole,
@@ -38,6 +38,9 @@ export const RoleModal = ({ popUp, handlePopUpToggle }: Props) => {
roleSlug: string;
};
+ const { currentOrg } = useOrganization();
+ const orgId = currentOrg?.id || "";
+
const { currentProject } = useProject();
const projectId = currentProject?.id || "";
@@ -93,6 +96,7 @@ export const RoleModal = ({ popUp, handlePopUpToggle }: Props) => {
navigate({
to: `${getProjectBaseURL(currentProject.type)}/roles/$roleSlug` as const,
params: {
+ orgId,
roleSlug: slug,
projectId
}
@@ -111,6 +115,7 @@ export const RoleModal = ({ popUp, handlePopUpToggle }: Props) => {
navigate({
to: `${getProjectBaseURL(currentProject.type)}/roles/$roleSlug` as const,
params: {
+ orgId,
roleSlug: newRole.slug,
projectId
}
diff --git a/frontend/src/pages/secret-manager/CommitDetailsPage/CommitDetailsPage.tsx b/frontend/src/pages/secret-manager/CommitDetailsPage/CommitDetailsPage.tsx
index 705ea2663..90688778b 100644
--- a/frontend/src/pages/secret-manager/CommitDetailsPage/CommitDetailsPage.tsx
+++ b/frontend/src/pages/secret-manager/CommitDetailsPage/CommitDetailsPage.tsx
@@ -45,7 +45,7 @@ export const CommitDetailsPage = () => {
folderId,
environment: envSlug
},
- search: (query: Record) => ({
+ search: (query) => ({
...query,
secretPath
})
@@ -62,7 +62,7 @@ export const CommitDetailsPage = () => {
environment: envSlug,
commitId: selectedCommitId
},
- search: (query: Record) => ({
+ search: (query) => ({
...query,
secretPath
})
diff --git a/frontend/src/pages/secret-manager/CommitsPage/CommitsPage.tsx b/frontend/src/pages/secret-manager/CommitsPage/CommitsPage.tsx
index e22b7c212..36e5c2015 100644
--- a/frontend/src/pages/secret-manager/CommitsPage/CommitsPage.tsx
+++ b/frontend/src/pages/secret-manager/CommitsPage/CommitsPage.tsx
@@ -46,7 +46,7 @@ export const CommitsPage = () => {
environment: envSlug,
commitId
},
- search: (query: Record) => ({
+ search: (query) => ({
...query,
secretPath
})
diff --git a/frontend/src/pages/secret-manager/IntegrationsDetailsByIDPage/components/IntegrationAuditLogsSection.tsx b/frontend/src/pages/secret-manager/IntegrationsDetailsByIDPage/components/IntegrationAuditLogsSection.tsx
index fcd080e65..fc0e31245 100644
--- a/frontend/src/pages/secret-manager/IntegrationsDetailsByIDPage/components/IntegrationAuditLogsSection.tsx
+++ b/frontend/src/pages/secret-manager/IntegrationsDetailsByIDPage/components/IntegrationAuditLogsSection.tsx
@@ -1,7 +1,7 @@
import { Link } from "@tanstack/react-router";
import { EmptyState } from "@app/components/v2";
-import { useProject, useSubscription } from "@app/context";
+import { useOrganization, useProject, useSubscription } from "@app/context";
import { EventType } from "@app/hooks/api/auditLogs/enums";
import { TIntegrationWithEnv } from "@app/hooks/api/integrations/types";
import { LogsSection } from "@app/pages/organization/AuditLogsPage/components/LogsSection";
@@ -15,6 +15,7 @@ type Props = {
export const IntegrationAuditLogsSection = ({ integration }: Props) => {
const { subscription } = useSubscription();
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
const auditLogsRetentionDays = subscription?.auditLogsRetentionDays ?? 30;
@@ -53,7 +54,12 @@ export const IntegrationAuditLogsSection = ({ integration }: Props) => {
Please{" "}
{subscription && subscription.slug !== null ? (
-
+
{
const navigate = useNavigate();
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
const { t } = useTranslation();
@@ -33,7 +39,8 @@ export const IntegrationsListPage = () => {
selectedTab: tab as IntegrationsListPageTabs
},
params: {
- projectId: currentProject.id
+ projectId: currentProject.id,
+ orgId: currentOrg.id
}
});
};
diff --git a/frontend/src/pages/secret-manager/IntegrationsListPage/components/CloudIntegrationSection/CloudIntegrationSection.tsx b/frontend/src/pages/secret-manager/IntegrationsListPage/components/CloudIntegrationSection/CloudIntegrationSection.tsx
index 9a6db9def..ff92f9f41 100644
--- a/frontend/src/pages/secret-manager/IntegrationsListPage/components/CloudIntegrationSection/CloudIntegrationSection.tsx
+++ b/frontend/src/pages/secret-manager/IntegrationsListPage/components/CloudIntegrationSection/CloudIntegrationSection.tsx
@@ -24,6 +24,7 @@ import { ROUTE_PATHS } from "@app/const/routes";
import {
ProjectPermissionActions,
ProjectPermissionSub,
+ useOrganization,
useProject,
useProjectPermission
} from "@app/context";
@@ -60,6 +61,7 @@ export const CloudIntegrationSection = ({
"deleteConfirmation"
] as const);
const { permission } = useProjectPermission();
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
const navigate = useNavigate();
@@ -138,6 +140,7 @@ export const CloudIntegrationSection = ({
navigate({
to: ROUTE_PATHS.SecretManager.IntegrationsListPage.path,
params: {
+ orgId: currentOrg.id,
projectId: currentProject.id
},
search: {
diff --git a/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/SecretSyncRow.tsx b/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/SecretSyncRow.tsx
index 0e04281a4..5e00d62af 100644
--- a/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/SecretSyncRow.tsx
+++ b/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/SecretSyncRow.tsx
@@ -40,7 +40,7 @@ import {
} from "@app/components/v2";
import { Badge } from "@app/components/v3";
import { ROUTE_PATHS } from "@app/const/routes";
-import { ProjectPermissionSub } from "@app/context";
+import { ProjectPermissionSub, useOrganization } from "@app/context";
import { ProjectPermissionSecretSyncActions } from "@app/context/ProjectPermissionContext/types";
import { SECRET_SYNC_MAP } from "@app/helpers/secretSyncs";
import { useToggle } from "@app/hooks";
@@ -81,6 +81,7 @@ export const SecretSyncRow = ({
projectId
} = secretSync;
+ const { currentOrg } = useOrganization();
const { syncOption } = useSecretSyncOption(destination);
const destinationName = SECRET_SYNC_MAP[destination].name;
@@ -134,7 +135,8 @@ export const SecretSyncRow = ({
params: {
syncId: id,
destination,
- projectId
+ projectId,
+ orgId: currentOrg.id
}
})
}
diff --git a/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncsTab.tsx b/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncsTab.tsx
index 24fba3b64..e584a73f7 100644
--- a/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncsTab.tsx
+++ b/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncsTab.tsx
@@ -9,7 +9,7 @@ import { TSecretSyncForm } from "@app/components/secret-syncs/forms/schemas";
import { Button, Spinner } from "@app/components/v2";
import { DocumentationLinkBadge } from "@app/components/v3";
import { ROUTE_PATHS } from "@app/const/routes";
-import { ProjectPermissionSub, useProject } from "@app/context";
+import { ProjectPermissionSub, useOrganization, useProject } from "@app/context";
import { ProjectPermissionSecretSyncActions } from "@app/context/ProjectPermissionContext/types";
import { usePopUp } from "@app/hooks";
import { useListSecretSyncs } from "@app/hooks/api/secretSyncs";
@@ -26,6 +26,7 @@ export const SecretSyncsTab = () => {
const navigate = useNavigate();
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
useEffect(() => {
@@ -35,7 +36,8 @@ export const SecretSyncsTab = () => {
navigate({
to: ROUTE_PATHS.SecretManager.IntegrationsListPage.path,
params: {
- projectId: currentProject.id
+ projectId: currentProject.id,
+ orgId: currentOrg.id
},
search
});
@@ -66,6 +68,7 @@ export const SecretSyncsTab = () => {
navigate({
to: ROUTE_PATHS.SecretManager.IntegrationsListPage.path,
params: {
+ orgId: currentOrg.id,
projectId: currentProject.id
},
search
diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx
index f8a201717..ed8a5ae88 100644
--- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx
+++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/EnvironmentTabs/EnvironmentTabs.tsx
@@ -24,6 +24,7 @@ import { ROUTE_PATHS } from "@app/const/routes";
import {
ProjectPermissionActions,
ProjectPermissionSub,
+ useOrganization,
useProject,
useSubscription
} from "@app/context";
@@ -45,6 +46,7 @@ type Props = {
const TABS_TO_SHOW = 5;
export const EnvironmentTabs = ({ secretPath }: Props) => {
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
const currentEnv = useParams({
from: ROUTE_PATHS.SecretManager.SecretDashboardPage.id,
@@ -96,7 +98,8 @@ export const EnvironmentTabs = ({ secretPath }: Props) => {
to: ROUTE_PATHS.SecretManager.SecretDashboardPage.path,
params: {
envSlug,
- projectId: currentProject.id
+ projectId: currentProject.id,
+ orgId: currentOrg.id
},
search: (prev) => prev
});
diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretDetailSidebar.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretDetailSidebar.tsx
index 3cb2a59ca..5a9b522a3 100644
--- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretDetailSidebar.tsx
+++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretDetailSidebar.tsx
@@ -46,6 +46,7 @@ import { InfisicalSecretInput } from "@app/components/v2/InfisicalSecretInput";
import {
ProjectPermissionActions,
ProjectPermissionSub,
+ useOrganization,
useProject,
useProjectPermission,
useSubscription
@@ -98,6 +99,7 @@ export const SecretDetailSidebar = ({
secretPath,
handleSecretShare
}: Props) => {
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
const [isFieldFocused, setIsFieldFocused] = useToggle();
const queryClient = useQueryClient();
@@ -776,6 +778,7 @@ export const SecretDetailSidebar = ({
`${getProjectBaseURL(currentProject.type)}/identities/$identityId` as const
}
params={{
+ orgId: currentOrg.id,
projectId: currentProject.id,
identityId: identity.id
}}
@@ -806,8 +809,9 @@ export const SecretDetailSidebar = ({
className="z-100"
>
{
const navigate = useNavigate();
- const { destination, syncId, projectId } = useParams({
+ const { destination, syncId, projectId, orgId } = useParams({
from: ROUTE_PATHS.SecretManager.SecretSyncDetailsByIDPage.id,
select: (params) => ({
...params,
@@ -82,6 +82,7 @@ const PageContent = () => {
navigate({
to: ROUTE_PATHS.SecretManager.IntegrationsListPage.path,
params: {
+ orgId,
projectId
},
search: {
diff --git a/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncActionTriggers.tsx b/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncActionTriggers.tsx
index ad82460eb..517d1cc7c 100644
--- a/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncActionTriggers.tsx
+++ b/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncActionTriggers.tsx
@@ -36,7 +36,7 @@ import {
} from "@app/components/v2";
import { Badge } from "@app/components/v3";
import { ROUTE_PATHS } from "@app/const/routes";
-import { ProjectPermissionSub } from "@app/context";
+import { ProjectPermissionSub, useOrganization } from "@app/context";
import { ProjectPermissionSecretSyncActions } from "@app/context/ProjectPermissionContext/types";
import { SECRET_SYNC_MAP } from "@app/helpers/secretSyncs";
import { usePopUp, useToggle } from "@app/hooks";
@@ -65,6 +65,7 @@ export const SecretSyncActionTriggers = ({ secretSync }: Props) => {
const updateSync = useUpdateSecretSync();
const { destination, environment, folder } = secretSync;
+ const { currentOrg } = useOrganization();
const destinationName = SECRET_SYNC_MAP[destination].name;
const { syncOption } = useSecretSyncOption(destination);
@@ -291,6 +292,7 @@ export const SecretSyncActionTriggers = ({ secretSync }: Props) => {
navigate({
to: ROUTE_PATHS.SecretManager.IntegrationsListPage.path,
params: {
+ orgId: currentOrg.id,
projectId: secretSync.projectId
},
search: {
diff --git a/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncAuditLogsSection.tsx b/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncAuditLogsSection.tsx
index a08d88139..74011228b 100644
--- a/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncAuditLogsSection.tsx
+++ b/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncAuditLogsSection.tsx
@@ -2,7 +2,7 @@ import { faFingerprint } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Link } from "@tanstack/react-router";
-import { useProject, useSubscription } from "@app/context";
+import { useOrganization, useProject, useSubscription } from "@app/context";
import { EventType } from "@app/hooks/api/auditLogs/enums";
import { TSecretSync } from "@app/hooks/api/secretSyncs";
import { LogsSection } from "@app/pages/organization/AuditLogsPage/components/LogsSection";
@@ -19,6 +19,7 @@ type Props = {
export const SecretSyncAuditLogsSection = ({ secretSync }: Props) => {
const { subscription } = useSubscription();
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
const auditLogsRetentionDays = subscription?.auditLogsRetentionDays ?? 30;
@@ -53,7 +54,12 @@ export const SecretSyncAuditLogsSection = ({ secretSync }: Props) => {
Please{" "}
{subscription && subscription.slug !== null ? (
-
+
{
const { code, state } = useSearch({
from: ROUTE_PATHS.SecretManager.Integratons.GitlabOauthCallbackPage.id
});
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
useEffect(() => {
@@ -25,7 +26,8 @@ export const GitLabOAuthCallbackPage = () => {
if (csrfToken !== storedState) {
console.error("CSRF token mismatch");
navigate({
- to: "/organization/app-connections",
+ to: "/organizations/$orgId/app-connections",
+ params: { orgId: currentOrg.id },
search: { error: "invalid_state" }
});
return;
@@ -37,7 +39,8 @@ export const GitLabOAuthCallbackPage = () => {
if (!storedFormData) {
console.error("No stored form data found");
navigate({
- to: "/organization/app-connections",
+ to: "/organizations/$orgId/app-connections",
+ params: { orgId: currentOrg.id },
search: { error: "missing_form_data" }
});
return;
@@ -73,7 +76,8 @@ export const GitLabOAuthCallbackPage = () => {
// Navigate to success page or app connections list
navigate({
- to: "/organization/app-connections",
+ to: "/organizations/$orgId/app-connections",
+ params: { orgId: currentOrg.id },
search: {
success: formData.isUpdate ? "connection_updated" : "connection_created",
connectionId: appConnection.id
@@ -82,12 +86,21 @@ export const GitLabOAuthCallbackPage = () => {
} catch (err) {
console.error("Error handling GitLab OAuth callback:", err);
navigate({
- to: "/organization/app-connections",
+ to: "/organizations/$orgId/app-connections",
+ params: { orgId: currentOrg.id },
search: { error: "connection_failed" }
});
}
})();
- }, [code, state, navigate, createAppConnection, updateAppConnection, currentProject.id]);
+ }, [
+ code,
+ state,
+ navigate,
+ createAppConnection,
+ updateAppConnection,
+ currentProject.id,
+ currentOrg.id
+ ]);
return (
diff --git a/frontend/src/pages/secret-manager/integrations/HerokuOauthCallbackPage/HerokuOauthCallbackPage.tsx b/frontend/src/pages/secret-manager/integrations/HerokuOauthCallbackPage/HerokuOauthCallbackPage.tsx
index 91e2b9d88..e2ed60d4e 100644
--- a/frontend/src/pages/secret-manager/integrations/HerokuOauthCallbackPage/HerokuOauthCallbackPage.tsx
+++ b/frontend/src/pages/secret-manager/integrations/HerokuOauthCallbackPage/HerokuOauthCallbackPage.tsx
@@ -2,7 +2,7 @@ import { useEffect } from "react";
import { useNavigate, useSearch } from "@tanstack/react-router";
import { ROUTE_PATHS } from "@app/const/routes";
-import { useProject } from "@app/context";
+import { useOrganization, useProject } from "@app/context";
import { useCreateAppConnection, useUpdateAppConnection } from "@app/hooks/api/appConnections";
import { HerokuConnectionMethod } from "@app/hooks/api/appConnections/types/heroku-connection";
@@ -14,7 +14,7 @@ export const HerokuOAuthCallbackPage = () => {
const { code, state } = useSearch({
from: ROUTE_PATHS.SecretManager.Integratons.HerokuOauthCallbackPage.id
});
-
+ const { currentOrg } = useOrganization();
const { currentProject } = useProject();
useEffect(() => {
@@ -25,7 +25,8 @@ export const HerokuOAuthCallbackPage = () => {
if (state !== storedState) {
console.error("CSRF token mismatch");
navigate({
- to: "/organization/app-connections",
+ to: "/organizations/$orgId/app-connections",
+ params: { orgId: currentOrg.id },
search: { error: "invalid_state" }
});
return;
@@ -39,7 +40,8 @@ export const HerokuOAuthCallbackPage = () => {
if (!storedFormData) {
console.error("No stored form data found");
navigate({
- to: "/organization/app-connections",
+ to: "/organizations/$orgId/app-connections",
+ params: { orgId: currentOrg.id },
search: { error: "missing_form_data" }
});
return;
@@ -74,7 +76,8 @@ export const HerokuOAuthCallbackPage = () => {
// Navigate to success page or app connections list
navigate({
- to: "/organization/app-connections",
+ to: "/organizations/$orgId/app-connections",
+ params: { orgId: currentOrg.id },
search: {
success: formData.isUpdate ? "connection_updated" : "connection_created",
connectionId: appConnection.id
@@ -83,7 +86,8 @@ export const HerokuOAuthCallbackPage = () => {
} catch (err) {
console.error("Error handling Heroku OAuth callback:", err);
navigate({
- to: "/organization/app-connections",
+ to: "/organizations/$orgId/app-connections",
+ params: { orgId: currentOrg.id },
search: { error: "connection_failed" }
});
}
diff --git a/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourceRow.tsx b/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourceRow.tsx
index baeb143da..fc721e384 100644
--- a/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourceRow.tsx
+++ b/frontend/src/pages/secret-scanning/SecretScanningDataSourcesPage/components/SecretScanningDataSourceRow.tsx
@@ -102,6 +102,7 @@ export const SecretScanningDataSourceRow = ({
navigate({
to: ROUTE_PATHS.SecretScanning.DataSourceByIdPage.path,
params: {
+ orgId: currentOrg.id,
dataSourceId: id,
type,
projectId