hasPermission('administer taxonomy')) { return AccessResult::allowed()->cachePerPermissions(); } switch ($operation) { case 'view': $access_result = AccessResult::allowedIf($account->hasPermission('access content') && $entity->isPublished()) ->cachePerPermissions() ->addCacheableDependency($entity); if (!$access_result->isAllowed()) { $access_result->setReason("The 'access content' permission is required and the taxonomy term must be published."); } return $access_result; case 'update': if ($account->hasPermission("edit terms in {$entity->bundle()}")) { return AccessResult::allowed()->cachePerPermissions(); } return AccessResult::neutral()->setReason("The following permissions are required: 'edit terms in {$entity->bundle()}' OR 'administer taxonomy'."); case 'delete': if ($account->hasPermission("delete terms in {$entity->bundle()}")) { return AccessResult::allowed()->cachePerPermissions(); } return AccessResult::neutral()->setReason("The following permissions are required: 'delete terms in {$entity->bundle()}' OR 'administer taxonomy'."); default: // No opinion. return AccessResult::neutral()->cachePerPermissions(); } } /** * {@inheritdoc} */ protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) { return AccessResult::allowedIfHasPermissions($account, ["create terms in $entity_bundle", 'administer taxonomy'], 'OR'); } }