Mercurial > hg > isophonics-drupal-site
diff core/modules/field/src/FieldStorageConfigAccessControlHandler.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/field/src/FieldStorageConfigAccessControlHandler.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,33 @@ +<?php + +namespace Drupal\field; + +use Drupal\Core\Access\AccessResult; +use Drupal\Core\Entity\EntityAccessControlHandler; +use Drupal\Core\Entity\EntityInterface; +use Drupal\Core\Session\AccountInterface; + +/** + * Defines the access control handler for the field storage config entity type. + * + * @see \Drupal\field\Entity\FieldStorageConfig + */ +class FieldStorageConfigAccessControlHandler extends EntityAccessControlHandler { + + /** + * {@inheritdoc} + */ + protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) { + /** \Drupal\field\FieldStorageConfigInterface $entity */ + if ($operation === 'delete') { + if ($entity->isLocked()) { + return AccessResult::forbidden()->addCacheableDependency($entity); + } + else { + return AccessResult::allowedIfHasPermission($account, 'administer ' . $entity->getTargetEntityTypeId() . ' fields')->addCacheableDependency($entity); + } + } + return AccessResult::allowedIfHasPermission($account, 'administer ' . $entity->getTargetEntityTypeId() . ' fields'); + } + +}