diff --git a/plugins/openchoreo-common/src/index.ts b/plugins/openchoreo-common/src/index.ts index 2d5f415a7..70d03d128 100644 --- a/plugins/openchoreo-common/src/index.ts +++ b/plugins/openchoreo-common/src/index.ts @@ -41,6 +41,7 @@ export { openchoreoEnvironmentReadPermission, openchoreoReleaseCreatePermission, openchoreoReleaseReadPermission, + openchoreoReleaseDeletePermission, openchoreoReleaseBindingUpdatePermission, openchoreoReleaseBindingReadPermission, openchoreoRoleViewPermission, diff --git a/plugins/openchoreo-common/src/permissions.ts b/plugins/openchoreo-common/src/permissions.ts index 3efc30792..5133698e4 100644 --- a/plugins/openchoreo-common/src/permissions.ts +++ b/plugins/openchoreo-common/src/permissions.ts @@ -566,6 +566,15 @@ export const openchoreoReleaseReadPermission = createPermission({ attributes: { action: 'read' }, }); +/** + * Permission to delete a component release. + * Org-scoped permission. + */ +export const openchoreoReleaseDeletePermission = createPermission({ + name: 'openchoreo.release.delete', + attributes: { action: 'delete' }, +}); + /** * Permission to update a release binding (e.g., undeploy a component from an environment). * Resource-based: requires the specific component context. @@ -832,6 +841,7 @@ export const openchoreoPermissions = [ openchoreoEnvironmentReadPermission, openchoreoReleaseCreatePermission, openchoreoReleaseReadPermission, + openchoreoReleaseDeletePermission, openchoreoReleaseBindingReadPermission, openchoreoReleaseBindingUpdatePermission, openchoreoRoleViewPermission, @@ -928,6 +938,7 @@ export const OPENCHOREO_PERMISSION_TO_ACTION: Record = { 'openchoreo.environment.read': 'environment:view', 'openchoreo.release.create': 'componentrelease:create', 'openchoreo.release.read': 'componentrelease:view', + 'openchoreo.release.delete': 'componentrelease:delete', 'openchoreo.releasebinding.update': 'releasebinding:update', 'openchoreo.releasebinding.read': 'releasebinding:view', 'openchoreo.role.view': 'authzrole:view', diff --git a/plugins/openchoreo/src/components/AccessControl/RolesTab/RoleDialog.tsx b/plugins/openchoreo/src/components/AccessControl/RolesTab/RoleDialog.tsx index 5926afc06..9647dcd9e 100644 --- a/plugins/openchoreo/src/components/AccessControl/RolesTab/RoleDialog.tsx +++ b/plugins/openchoreo/src/components/AccessControl/RolesTab/RoleDialog.tsx @@ -78,6 +78,7 @@ const ROLE_TEMPLATES = { 'component:delete', 'componentrelease:view', 'componentrelease:create', + 'componentrelease:delete', 'releasebinding:view', 'releasebinding:create', 'releasebinding:update',