diff --git a/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php b/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php index 2fb3233..2cce92a 100644 --- a/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php +++ b/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php @@ -24,6 +24,13 @@ class EntityCreateAccessCheck implements AccessCheckInterface { protected $entityManager; /** + * The key used by the routing requirement. + * + * @var string + */ + protected $requirementsKey = '_entity_create_access'; + + /** * Constructs a EntityCreateAccessCheck object. * * @param \Drupal\Core\Entity\EntityManager $entity_manager @@ -37,14 +44,14 @@ public function __construct(EntityManager $entity_manager) { * {@inheritdoc} */ public function applies(Route $route) { - return array_key_exists('_entity_create_access', $route->getRequirements()); + return array_key_exists($this->requirementsKey, $route->getRequirements()); } /** * {@inheritdoc} */ public function access(Route $route, Request $request) { - list($entity_type, $bundle) = explode(':', $route->getRequirement('_entity_create_access') . ':'); + list($entity_type, $bundle) = explode(':', $route->getRequirement($this->requirementsKey) . ':'); $definition = $this->entityManager->getDefinition($entity_type); diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Access/TaxonomyTermCreateAccess.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Access/TaxonomyTermCreateAccess.php index a0daf3f..87ea3aa 100644 --- a/core/modules/taxonomy/lib/Drupal/taxonomy/Access/TaxonomyTermCreateAccess.php +++ b/core/modules/taxonomy/lib/Drupal/taxonomy/Access/TaxonomyTermCreateAccess.php @@ -7,29 +7,28 @@ namespace Drupal\taxonomy\Access; -use Drupal\Core\Access\AccessCheckInterface; -use Symfony\Component\Routing\Route; +use Drupal\Core\Entity\EntityCreateAccessCheck; use Symfony\Component\HttpFoundation\Request; /** * Provides an access check for taxonomy term creation. */ -class TaxonomyTermCreateAccess implements AccessCheckInterface { +class TaxonomyTermCreateAccess extends EntityCreateAccessCheck { /** * {@inheritdoc} */ - public function applies(Route $route) { - return array_key_exists('_access_taxonomy_term_create', $route->getRequirements()); - } + protected $requirementsKey = '_access_taxonomy_term_create'; /** * {@inheritdoc} */ - public function access(Route $route, Request $request) { + protected function prepareEntityValues(array $definition, Request $request, $bundle = NULL) { + $values = array(); if ($vocabulary = $request->attributes->get('taxonomy_vocabulary')) { - return entity_page_create_access('taxonomy_term', $vocabulary->id()); + $values = parent::prepareEntityValues($definition, $request, $vocabulary->id()); } + return $values; } } diff --git a/core/modules/taxonomy/taxonomy.routing.yml b/core/modules/taxonomy/taxonomy.routing.yml index 603c0c7..389ca7c 100644 --- a/core/modules/taxonomy/taxonomy.routing.yml +++ b/core/modules/taxonomy/taxonomy.routing.yml @@ -10,4 +10,4 @@ taxonomy_term_add: defaults: _content: '\Drupal\taxonomy\Controller\TaxonomyController::addForm' requirements: - _access_taxonomy_term_create: 'TRUE' + _access_taxonomy_term_create: 'taxonomy_term' diff --git a/core/modules/taxonomy/taxonomy.services.yml b/core/modules/taxonomy/taxonomy.services.yml index cdabe8c..265eb5d 100644 --- a/core/modules/taxonomy/taxonomy.services.yml +++ b/core/modules/taxonomy/taxonomy.services.yml @@ -1,5 +1,6 @@ services: access_check.taxonomy_term.create: class: Drupal\taxonomy\Access\TaxonomyTermCreateAccess + arguments: ['@plugin.manager.entity'] tags: - { name: access_check }