misc: addressed rbac for bulk delete in overview

This commit is contained in:
Sheen Capadngan
2024-05-07 16:37:10 +08:00
parent 536f51f6ba
commit b6a73459a8
@@ -43,14 +43,26 @@ export const SelectionPanel = ({ getFolderByNameAndEnv, getSecretByKey, secretPa
const isMultiSelectActive = selectedCount > 0; const isMultiSelectActive = selectedCount > 0;
// TODO: REVISIT RBAC // user should have the ability to delete secrets/folders in at least one of the envs
const shouldShowDelete = permission.can( const shouldShowDelete = userAvailableEnvs.some((env) =>
permission.can(
ProjectPermissionActions.Delete, ProjectPermissionActions.Delete,
subject(ProjectPermissionSub.Secrets, { environment: "", secretPath }) subject(ProjectPermissionSub.Secrets, { environment: env.slug, secretPath })
)
); );
const handleBulkDelete = async () => { const handleBulkDelete = async () => {
const promises = userAvailableEnvs.map(async (env) => { const promises = userAvailableEnvs.map(async (env) => {
// additional check: ensure that bulk delete is only executed on envs that user has access to
if (
permission.cannot(
ProjectPermissionActions.Delete,
subject(ProjectPermissionSub.Secrets, { environment: env.slug, secretPath })
)
) {
return;
}
await Promise.all( await Promise.all(
Object.keys(selectedEntries.folder).map(async (folderName) => { Object.keys(selectedEntries.folder).map(async (folderName) => {
const folder = getFolderByNameAndEnv(folderName, env.slug); const folder = getFolderByNameAndEnv(folderName, env.slug);