Mercurial > hg > isophonics-drupal-site
diff core/modules/language/src/LanguageAccessControlHandler.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/language/src/LanguageAccessControlHandler.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,42 @@ +<?php + +namespace Drupal\language; + +use Drupal\Core\Access\AccessResult; +use Drupal\Core\Entity\EntityAccessControlHandler; +use Drupal\Core\Entity\EntityInterface; +use Drupal\Core\Session\AccountInterface; + +/** + * Defines the access control handler for the language entity type. + * + * @see \Drupal\language\Entity\Language + */ +class LanguageAccessControlHandler extends EntityAccessControlHandler { + + /** + * {@inheritdoc} + */ + protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) { + switch ($operation) { + case 'view': + return parent::checkAccess($entity, $operation, $account); + + case 'update': + /* @var \Drupal\Core\Language\LanguageInterface $entity */ + return AccessResult::allowedIf(!$entity->isLocked())->addCacheableDependency($entity) + ->andIf(parent::checkAccess($entity, $operation, $account)); + + case 'delete': + /* @var \Drupal\Core\Language\LanguageInterface $entity */ + return AccessResult::allowedIf(!$entity->isLocked())->addCacheableDependency($entity) + ->andIf(AccessResult::allowedIf(!$entity->isDefault())->addCacheableDependency($entity)) + ->andIf(parent::checkAccess($entity, $operation, $account)); + + default: + // No opinion. + return AccessResult::neutral(); + } + } + +}