diff --git a/typescript/frontend-marios2/src/content/dashboards/ManageAccess/UserAccess.tsx b/typescript/frontend-marios2/src/content/dashboards/ManageAccess/UserAccess.tsx index 9df3b5945..12c675b42 100644 --- a/typescript/frontend-marios2/src/content/dashboards/ManageAccess/UserAccess.tsx +++ b/typescript/frontend-marios2/src/content/dashboards/ManageAccess/UserAccess.tsx @@ -82,6 +82,13 @@ function UserAccess(props: UserAccessProps) { const [openFolder, setOpenFolder] = useState(false); const [openModal, setOpenModal] = useState(false); + // Pending access revoke awaiting confirmation (folder or direct installation) + const [revokeTarget, setRevokeTarget] = useState<{ + type: 'folder' | 'installation'; + id: number; + name: string; + } | null>(null); + const [selectedFolderNames, setSelectedFolderNames] = useState([]); const [selectedInstallations, setSelectedInstallations] = useState([]); @@ -248,6 +255,16 @@ function UserAccess(props: UserAccessProps) { }); }; + const confirmRevoke = () => { + if (!revokeTarget) return; + if (revokeTarget.type === 'folder') { + handleRevokeFolder(revokeTarget.id, revokeTarget.name); + } else { + handleRevokeInstallation(revokeTarget.id); + } + setRevokeTarget(null); + }; + const handleSubmit = async () => { for (const folderName of selectedFolderNames) { const folder = availableFolders.find((f) => f.name === folderName); @@ -405,6 +422,66 @@ function UserAccess(props: UserAccessProps) { + {/* Revoke Access Confirmation Modal */} + setRevokeTarget(null)} + aria-labelledby="revoke-confirm-modal" + > + + + + + +
+ + +
+
+
+