You are here

public function ContentTranslationHandler::getTranslationAccess in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/content_translation/src/ContentTranslationHandler.php \Drupal\content_translation\ContentTranslationHandler::getTranslationAccess()

Checks if the user can perform the given operation on translations of the wrapped entity.

Parameters

\Drupal\Core\Entity\EntityInterface $entity: The entity whose translation has to be accessed.

$op: The operation to be performed on the translation. Possible values are:

  • "create"
  • "update"
  • "delete"

Return value

\Drupal\Core\Access\AccessResultInterface The access result.

Overrides ContentTranslationHandlerInterface::getTranslationAccess

File

core/modules/content_translation/src/ContentTranslationHandler.php, line 288

Class

ContentTranslationHandler
Base class for content translation handlers.

Namespace

Drupal\content_translation

Code

public function getTranslationAccess(EntityInterface $entity, $op) {

  // @todo Move this logic into a translation access control handler checking also
  //   the translation language and the given account.
  $entity_type = $entity
    ->getEntityType();
  $translate_permission = TRUE;

  // If no permission granularity is defined this entity type does not need an
  // explicit translate permission.
  if (!$this->currentUser
    ->hasPermission('translate any entity') && ($permission_granularity = $entity_type
    ->getPermissionGranularity())) {
    $translate_permission = $this->currentUser
      ->hasPermission($permission_granularity == 'bundle' ? "translate {$entity->bundle()} {$entity->getEntityTypeId()}" : "translate {$entity->getEntityTypeId()}");
  }
  return AccessResult::allowedIf($translate_permission && $this->currentUser
    ->hasPermission("{$op} content translations"))
    ->cachePerPermissions();
}