You are here

protected function BundlePermissionHandlerTrait::generatePermissions in Drupal 9

Same name and namespace in other branches
  1. 10 core/lib/Drupal/Core/Entity/BundlePermissionHandlerTrait.php \Drupal\Core\Entity\BundlePermissionHandlerTrait::generatePermissions()

Builds a permissions array for the supplied bundles.

Parameters

\Drupal\Core\Entity\EntityInterface[] $bundles: An array of bundles to generate permissions for.

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 value

array Permissions array. See PermissionHandlerInterface::getPermissions() for the array structure.

See also

\Drupal\user\PermissionHandlerInterface::getPermissions()

4 calls to BundlePermissionHandlerTrait::generatePermissions()
BundlePermissionHandlerTraitTest::testGeneratePermissions in core/tests/Drupal/KernelTests/Core/Entity/BundlePermissionHandlerTraitTest.php
@covers ::generatePermissions
MediaPermissions::mediaTypePermissions in core/modules/media/src/MediaPermissions.php
Returns an array of media type permissions.
NodePermissions::nodeTypePermissions in core/modules/node/src/NodePermissions.php
Returns an array of node type permissions.
TaxonomyPermissions::permissions in core/modules/taxonomy/src/TaxonomyPermissions.php
Get taxonomy permissions.

File

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

Class

BundlePermissionHandlerTrait
Provides a method to simplify generating bundle level permissions.

Namespace

Drupal\Core\Entity

Code

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;
}