You are here

trait BundlePermissionHandlerTrait in Drupal 10

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Entity/BundlePermissionHandlerTrait.php \Drupal\Core\Entity\BundlePermissionHandlerTrait

Provides a method to simplify generating bundle level permissions.

Hierarchy

4 files declare their use of BundlePermissionHandlerTrait
BundlePermissionHandlerTraitTest.php in core/tests/Drupal/KernelTests/Core/Entity/BundlePermissionHandlerTraitTest.php
MediaPermissions.php in core/modules/media/src/MediaPermissions.php
NodePermissions.php in core/modules/node/src/NodePermissions.php
TaxonomyPermissions.php in core/modules/taxonomy/src/TaxonomyPermissions.php

File

core/lib/Drupal/Core/Entity/BundlePermissionHandlerTrait.php, line 8

Namespace

Drupal\Core\Entity
View source
trait BundlePermissionHandlerTrait {

  /**
   * Builds a permissions array for the supplied bundles.
   *
   * @param \Drupal\Core\Entity\EntityInterface[] $bundles
   *   An array of bundles to generate permissions for.
   * @param callable $permission_builder
   *   A callable to generate the permissions for a particular bundle. Returns
   *   an array of permissions. See PermissionHandlerInterface::getPermissions()
   *   for the array structure.
   *
   * @return array
   *   Permissions array. See PermissionHandlerInterface::getPermissions() for
   *   the array structure.
   *
   * @see \Drupal\user\PermissionHandlerInterface::getPermissions()
   */
  protected function generatePermissions(array $bundles, callable $permission_builder) {
    $permissions = [];
    foreach ($bundles as $bundle) {
      $permissions += array_map(function (array $perm) use ($bundle) {

        // This permission is generated on behalf of a bundle, therefore
        // add the bundle as a config dependency.
        $perm['dependencies'][$bundle
          ->getConfigDependencyKey()][] = $bundle
          ->getConfigDependencyName();
        return $perm;
      }, $permission_builder($bundle));
    }
    return $permissions;
  }

}

Members