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