class EntityPermissionProvider in Entity API 8
Provides generic entity permissions.
Intended for content entity types, since config entity types usually rely on a single "administer" permission.
Provided permissions:
- The declared "admin_permission" of the entity type (or "administer $entity_type" if the entity type does not declare an administrative permission)
- access $entity_type overview
- view own unpublished $entity_type
- view ($bundle) $entity_type
- update (own|any) ($bundle) $entity_type
- duplicate (own|any) ($bundle) $entity_type
- delete (own|any) ($bundle) $entity_type
- create $bundle $entity_type
Does not provide "view own ($bundle) $entity_type" permissions, because they require caching pages per user. Please use \Drupal\entity\UncacheableEntityPermissionProvider if those permissions are necessary.
Example annotation:
handlers = {
"access" = "Drupal\entity\EntityAccessControlHandler",
"permission_provider" = "Drupal\entity\EntityPermissionProvider",
}
Hierarchy
- class \Drupal\entity\EntityPermissionProviderBase implements EntityHandlerInterface, EntityPermissionProviderInterface uses StringTranslationTrait
- class \Drupal\entity\EntityPermissionProvider
Expanded class hierarchy of EntityPermissionProvider
See also
\Drupal\entity\EntityAccessControlHandler
\Drupal\entity\EntityPermissions
2 files declare their use of EntityPermissionProvider
- EntityAccessControlHandlerTest.php in tests/
src/ Unit/ EntityAccessControlHandlerTest.php - EntityPermissionProviderTest.php in tests/
src/ Unit/ EntityPermissionProviderTest.php
File
- src/
EntityPermissionProvider.php, line 41
Namespace
Drupal\entityView source
class EntityPermissionProvider extends EntityPermissionProviderBase {
/**
* Builds permissions for the entity_type granularity.
*
* @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
* The entity type.
*
* @return array
* The permissions.
*/
protected function buildEntityTypePermissions(EntityTypeInterface $entity_type) {
$permissions = parent::buildEntityTypePermissions($entity_type);
$entity_type_id = $entity_type
->id();
$plural_label = $entity_type
->getPluralLabel();
$permissions["view {$entity_type_id}"] = [
'title' => $this
->t('View @type', [
'@type' => $plural_label,
]),
];
return $permissions;
}
/**
* Builds permissions for the bundle granularity.
*
* @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
* The entity type.
*
* @return array
* The permissions.
*/
protected function buildBundlePermissions(EntityTypeInterface $entity_type) {
$permissions = parent::buildBundlePermissions($entity_type);
$entity_type_id = $entity_type
->id();
$bundles = $this->entityTypeBundleInfo
->getBundleInfo($entity_type_id);
$plural_label = $entity_type
->getPluralLabel();
$permissions["view {$entity_type_id}"] = [
'title' => $this
->t('View @type', [
'@type' => $plural_label,
]),
];
foreach ($bundles as $bundle_name => $bundle_info) {
$permissions["view {$bundle_name} {$entity_type_id}"] = [
'title' => $this
->t('@bundle: View @type', [
'@bundle' => $bundle_info['label'],
'@type' => $plural_label,
]),
];
}
return $permissions;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
EntityPermissionProvider:: |
protected | function |
Builds permissions for the bundle granularity. Overrides EntityPermissionProviderBase:: |
|
EntityPermissionProvider:: |
protected | function |
Builds permissions for the entity_type granularity. Overrides EntityPermissionProviderBase:: |
|
EntityPermissionProviderBase:: |
protected | property | The entity type bundle info. | |
EntityPermissionProviderBase:: |
public | function |
Builds permissions for the given entity type. Overrides EntityPermissionProviderInterface:: |
|
EntityPermissionProviderBase:: |
public static | function |
Instantiates a new instance of this entity handler. Overrides EntityHandlerInterface:: |
|
EntityPermissionProviderBase:: |
protected | function | Adds the provider and converts the titles to strings to allow sorting. | |
EntityPermissionProviderBase:: |
public | function | Constructs a new EntityPermissionProvider object. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |