diff --git a/hierarchy_manager.routing.yml b/hierarchy_manager.routing.yml index 8dbfe2702bd579f1de98ac09d563dde3c8f1cfb0..55cf2ce0e62557d1ad57b90fe2e130211be17943 100644 --- a/hierarchy_manager.routing.yml +++ b/hierarchy_manager.routing.yml @@ -25,7 +25,7 @@ hierarchy_manager.taxonomy.tree.json: _title: 'Taxonomy tree' _controller: '\Drupal\hierarchy_manager\Controller\HmTaxonomyController::taxonomyTreeJson' requirements: - _permission: 'administer taxonomy' + _custom_access: '\Drupal\hierarchy_manager\Controller\HmTaxonomyController::access' options: _admin_route: TRUE hierarchy_manager.taxonomy.tree.update: @@ -34,7 +34,7 @@ hierarchy_manager.taxonomy.tree.update: _title: 'Taxonomy tree' _controller: '\Drupal\hierarchy_manager\Controller\HmTaxonomyController::updateTerms' requirements: - _permission: 'administer taxonomy' + _custom_access: '\Drupal\hierarchy_manager\Controller\HmTaxonomyController::access' options: _admin_route: TRUE diff --git a/src/Controller/HmTaxonomyController.php b/src/Controller/HmTaxonomyController.php index 3b96443b0004a96135c21c7e8297f53b236337d0..fdf79ffd95ff4e4cea3b430f8098dad428d5622a 100644 --- a/src/Controller/HmTaxonomyController.php +++ b/src/Controller/HmTaxonomyController.php @@ -2,10 +2,12 @@ namespace Drupal\hierarchy_manager\Controller; +use Drupal\Core\Access\AccessResult; use Drupal\Core\Access\CsrfTokenGenerator; use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Entity\EntityRepositoryInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; +use Drupal\Core\Session\AccountInterface; use Drupal\taxonomy\Entity\Term; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Request; @@ -69,6 +71,22 @@ class HmTaxonomyController extends ControllerBase { ); } + + /** + * Access check callback for taxonomy tree json. + * + * @param \Drupal\Core\Session\AccountInterface $account + * User account. + * @param string $vid + * Vocabulary ID. + */ + public function access(AccountInterface $account, string $vid) { + if ($account->hasPermission('administer taxonomy')) { + return AccessResult::allowed(); + } + return AccessResult::allowedIfHasPermission($account, "edit terms in {$vid}"); + } + /** * Callback for taxonomy tree json. *