You are here

protected function UncacheableEntityPermissionProvider::buildBundlePermissions in Entity API 8

Builds permissions for the bundle granularity.

Parameters

\Drupal\Core\Entity\EntityTypeInterface $entity_type: The entity type.

Return value

array The permissions.

Overrides EntityPermissionProviderBase::buildBundlePermissions

File

src/UncacheableEntityPermissionProvider.php, line 93

Class

UncacheableEntityPermissionProvider
Provides generic entity permissions which are cached per user.

Namespace

Drupal\entity

Code

protected function buildBundlePermissions(EntityTypeInterface $entity_type) {
  $permissions = parent::buildBundlePermissions($entity_type);
  $entity_type_id = $entity_type
    ->id();
  $bundles = $this->entityTypeBundleInfo
    ->getBundleInfo($entity_type_id);
  $has_owner = $entity_type
    ->entityClassImplements(EntityOwnerInterface::class);
  $plural_label = $entity_type
    ->getPluralLabel();
  if ($has_owner) {
    $permissions["view any {$entity_type_id}"] = [
      'title' => $this
        ->t('View any @type', [
        '@type' => $plural_label,
      ]),
    ];
    $permissions["view own {$entity_type_id}"] = [
      'title' => $this
        ->t('View own @type', [
        '@type' => $plural_label,
      ]),
    ];
  }
  else {
    $permissions["view {$entity_type_id}"] = [
      'title' => $this
        ->t('View @type', [
        '@type' => $plural_label,
      ]),
    ];
  }
  foreach ($bundles as $bundle_name => $bundle_info) {
    if ($has_owner) {
      $permissions["view any {$bundle_name} {$entity_type_id}"] = [
        'title' => $this
          ->t('@bundle: View any @type', [
          '@bundle' => $bundle_info['label'],
          '@type' => $plural_label,
        ]),
      ];
      $permissions["view own {$bundle_name} {$entity_type_id}"] = [
        'title' => $this
          ->t('@bundle: View own @type', [
          '@bundle' => $bundle_info['label'],
          '@type' => $plural_label,
        ]),
      ];
    }
    else {
      $permissions["view {$bundle_name} {$entity_type_id}"] = [
        'title' => $this
          ->t('@bundle: View @type', [
          '@bundle' => $bundle_info['label'],
          '@type' => $plural_label,
        ]),
      ];
    }
  }
  return $permissions;
}