content_entity_base-8.x-1.x-dev/src/Entity/Access/EntityPermissionProvider.php
src/Entity/Access/EntityPermissionProvider.php
<?php namespace Drupal\content_entity_base\Entity\Access; use Drupal\Core\Entity\EntityHandlerInterface; use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides base permissions for use as a `permission_provider` handler in * entity definitions. * * @see tests/modules/ceb_test/src/Entity/CebTestContent.php */ class EntityPermissionProvider implements EntityPermissionProviderInterface, EntityHandlerInterface { use StringTranslationTrait; /** * Information about the entity type. * * @var \Drupal\Core\Entity\EntityTypeInterface */ protected $entity_type; /** * The entity manager. * * @var \Drupal\Core\Entity\EntityManagerInterface */ protected $entity_manager; /** * The original permission base that was proxied by content entity modules. * * @var \Drupal\content_entity_base\Entity\Access\EntityPermissionProviderInterface */ protected $entity_base_permissions; /** * Constructs an EntityPermissionProvider object. * * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type * The entity type to provide views integration for. * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_manager * The entity manager. */ function __construct(EntityTypeInterface $entity_type, EntityTypeManagerInterface $entity_manager) { $this->entity_type = $entity_type; $this->entity_manager = $entity_manager; } /** * {@inheritdoc} */ public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) { return new static( $entity_type, $container->get('entity_type.manager') ); } /** * {@inheritdoc} */ public function entityPermissions() { // Use the legacy permission provider until it is removed. $legacy_permission_provider = EntityBasePermissions::create(\Drupal::getContainer()); $perms = $legacy_permission_provider->entityPermissions($this->entity_type); // Set the provider for the permissions page (@see http://drupal.org/node/2673726). array_walk($perms, function (&$perm) { $perm['provider'] = $this->entity_type->getProvider(); }); return $perms; } }