Feature Request - Allow users with developer role to delete packages
### Proposal The current documentation for [Delete package assets](https://docs.gitlab.com/18.9/user/packages/package_registry/reduce_package_registry_storage/#delete-package-assets) states: > You must have at least the Developer role. (similar for the general deletion of a package). This was proposed within https://gitlab.com/gitlab-org/gitlab/-/work_items/32107#proposal. However, when using a user with only the Developer role they are not able to delete packages. This is crucial for us, since in test deployments we first push to the package registry and then pull the packages from there. Since it can occur that packages are built multiple times we make sure to delete a package first. This pipeline always fails if it was started by users which are only Developers. Gitlab support suggested to use a project access token (PAT) with Maintainer role to circumvent that. However, this might become a security problem, since members of the project could create a pipeline using the PAT and send requests to the API e.g. giving their own user more rights. Support used the Rails console: ``` # Find any project and a user with Developer role on it project = Project.find_by_full_path('test/test') # Find a member with Developer role (access_level 30) developer = project.members.find_by(access_level: 30)&.user maintainer = project.members.find_by(access_level: 40)&.user puts "Developer: #{developer&.username}" puts "Maintainer: #{maintainer&.username}" # Check all package abilities - no packages need to exist %i[read_package create_package destroy_package admin_package].each do |ability| puts "Developer - #{ability}: #{Ability.allowed?(developer, ability, project)}" puts "Maintainer - #{ability}: #{Ability.allowed?(maintainer, ability, project)}" end ``` They obtained: ``` Developer - read_package: true Maintainer - read_package: true Developer - create_package: true Maintainer - create_package: true Developer - destroy_package: false Maintainer - destroy_package: true Developer - admin_package: false Maintainer - admin_package: true ``` Where we believe the output should be: ``` Developer - read_package: true Maintainer - read_package: true Developer - create_package: true Maintainer - create_package: true Developer - destroy_package: true Maintainer - destroy_package: true Developer - admin_package: true Maintainer - admin_package: true ``` [Support issue](https://support.gitlab.com/hc/en-us/requests/698503)
issue