From ddab2fccb5bd1e0e0c865c7d6c3ddbc93db69834 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Tue, 9 Dec 2025 19:54:24 +0400 Subject: [PATCH] fix: Missing project ID error when editing or creating project template roles --- ...ProjectAdditionalPrivilegeModifySection.tsx | 6 +++++- ...ProjectAdditionalPrivilegeModifySection.tsx | 6 +++++- .../components/AddPoliciesButton.tsx | 4 +++- .../components/PolicySelectionModal.tsx | 18 ++++++++++-------- .../components/RolePermissionsSection.tsx | 6 +++++- 5 files changed, 28 insertions(+), 12 deletions(-) diff --git a/frontend/src/pages/project/IdentityDetailsByIDPage/components/IdentityProjectAdditionalPrivilegeSection/IdentityProjectAdditionalPrivilegeModifySection.tsx b/frontend/src/pages/project/IdentityDetailsByIDPage/components/IdentityProjectAdditionalPrivilegeSection/IdentityProjectAdditionalPrivilegeModifySection.tsx index 956c01d694..cadab6fbc0 100644 --- a/frontend/src/pages/project/IdentityDetailsByIDPage/components/IdentityProjectAdditionalPrivilegeSection/IdentityProjectAdditionalPrivilegeModifySection.tsx +++ b/frontend/src/pages/project/IdentityDetailsByIDPage/components/IdentityProjectAdditionalPrivilegeSection/IdentityProjectAdditionalPrivilegeModifySection.tsx @@ -220,7 +220,11 @@ export const IdentityProjectAdditionalPrivilegeModifySection = ({ > Save - + diff --git a/frontend/src/pages/project/MemberDetailsByIDPage/components/MemberProjectAdditionalPrivilegeSection/MembershipProjectAdditionalPrivilegeModifySection.tsx b/frontend/src/pages/project/MemberDetailsByIDPage/components/MemberProjectAdditionalPrivilegeSection/MembershipProjectAdditionalPrivilegeModifySection.tsx index bc5bd3a6f2..6719d3785b 100644 --- a/frontend/src/pages/project/MemberDetailsByIDPage/components/MemberProjectAdditionalPrivilegeSection/MembershipProjectAdditionalPrivilegeModifySection.tsx +++ b/frontend/src/pages/project/MemberDetailsByIDPage/components/MemberProjectAdditionalPrivilegeSection/MembershipProjectAdditionalPrivilegeModifySection.tsx @@ -216,7 +216,11 @@ export const MembershipProjectAdditionalPrivilegeModifySection = ({ > Save - + diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx index 16ceb18632..1ac04dae09 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx @@ -21,9 +21,10 @@ import { VaultPolicyImportModal } from "@app/pages/project/RoleDetailsBySlugPage type Props = { isDisabled?: boolean; projectType: ProjectType; + projectId?: string; }; -export const AddPoliciesButton = ({ isDisabled, projectType }: Props) => { +export const AddPoliciesButton = ({ isDisabled, projectType, projectId }: Props) => { const { popUp, handlePopUpToggle, handlePopUpOpen, handlePopUpClose } = usePopUp([ "addPolicy", "addPolicyOptions", @@ -109,6 +110,7 @@ export const AddPoliciesButton = ({ isDisabled, projectType }: Props) => { handlePopUpToggle("addPolicy", isOpen)} diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/PolicySelectionModal.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/PolicySelectionModal.tsx index 46ea296ea4..af92a13e66 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/PolicySelectionModal.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/PolicySelectionModal.tsx @@ -18,7 +18,7 @@ import { Tooltip, Tr } from "@app/components/v2"; -import { ProjectPermissionSub, useProject } from "@app/context"; +import { ProjectPermissionSub } from "@app/context"; import { useGetWorkspaceIntegrations } from "@app/hooks/api"; import { ProjectType } from "@app/hooks/api/projects/types"; @@ -34,23 +34,25 @@ type Props = { isOpen: boolean; onOpenChange: (isOpen: boolean) => void; type: ProjectType; + projectId?: string; }; type ContentProps = { onClose: () => void; + // note(daniel): we allow projectId to be undefined because we use this component for project templates, in which case no project ID will be present. + projectId?: string; type: ProjectType; }; type TForm = { permissions: Record }; -const Content = ({ onClose, type: projectType }: ContentProps) => { +const Content = ({ onClose, projectId, type: projectType }: ContentProps) => { const rootForm = useFormContext(); const [search, setSearch] = useState(""); - const { currentProject, projectId } = useProject(); - const isSecretManagerProject = currentProject.type === ProjectType.SecretManager; - const { data: integrations = [] } = useGetWorkspaceIntegrations(projectId, { - enabled: isSecretManagerProject, + const isSecretManagerProject = projectType === ProjectType.SecretManager; + const { data: integrations = [] } = useGetWorkspaceIntegrations(projectId ?? "", { + enabled: Boolean(isSecretManagerProject && projectId), refetchInterval: false }); @@ -216,7 +218,7 @@ const Content = ({ onClose, type: projectType }: ContentProps) => { ); }; -export const PolicySelectionModal = ({ isOpen, onOpenChange, type }: Props) => { +export const PolicySelectionModal = ({ isOpen, onOpenChange, type, projectId }: Props) => { return ( { subTitle="Select one or more policies to add to this role." className="max-w-3xl" > - onOpenChange(false)} type={type} /> + onOpenChange(false)} type={type} projectId={projectId} /> ); diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx index de46579e8c..039b44de51 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx @@ -209,7 +209,11 @@ export const RolePermissionsSection = ({ roleSlug, isDisabled }: Props) => { Save
- +
)}