Issues like #3787 and #4487 were the triggers for this issue here.
Our Drupal brethren started implementing this and were originally planning to add it in Drupal 8.5.0:
- Change record (draft): Permissions may be marked deprecated in the permission definition
- Issue (still open - now against Drupal 11.x): https://www.drupal.org/project/drupal/issues/2924785
Problem/Motivation
Wherever possible, Drupal 8 code should deprecate instead of removing old code, behaviors, etc.
Permission machine names are stored in user role configurations, but they are also used in code for many things like access checks. This means that if core updates the machine name of a permission, even if it provides an upgrade path, contributed module code that checks against the core permissions might start to deny access that should be allowed.
Marked major because it affects how thoroughly we can implement our backwards compatibility policy.
Proposed resolution
Provide a mechanism to deprecate permissions in the permission definition.
Remaining tasks
- Needs review.
- Followup to explore how to raise warnings when a deprecated permission is used.
User interface changes
If no deprecated permissions are used, there is no UI change: unused deprecated permissions are simply not presented to the user.
If a deprecated permission is in use, the user will see a short message under the permission. The permission can be revoked from roles that have it through the UI, but not granted to additional roles (unchecked checkboxes for it will be disabled).
A message will also be provided on the status report.
API changes
A deprecated key is added to the permission definition API.
Recent comments
Hi Rob, Welcome to Backdrop! Here’s a quick overview: Subtheming Bootswatch: You should create your subtheme based on Bootstrap5 Lite, not directly on a Bootswatch style....
Basic Theme designing questions, using Bootstrap5 Lite
Hi Rolf, This happens because CKEditor saves absolute or semi-absolute paths in the HTML instead of using Backdrop’s file stream wrappers (like public://). When you move your site...
Losing link to embedded pictures when moving my installation
The error means the Stripe client isn’t initialized — $stripe is null. Fix steps: In CiviCRM → Payment Processors, ensure valid test/live API keys are entered and match the mode...
Getting Error after submitting event register form By using Stripe Payment Processor