summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxjm2017-04-19 16:45:52 (GMT)
committerxjm2017-04-19 16:45:52 (GMT)
commit662512a9949ec7c2e29a8020c692be108b511406 (patch)
treef82b0939083d1ff075f2b2023b0f385054dd4740
parente2fc6ffedf85722e2210edee645fa00d12771c3b (diff)
SA-CORE-2017-002 by alexpott, xjm, larowlan, Wim Leers, samuel.mortenson, Berdir, dawehner, tstoeckler, catch
-rw-r--r--core/lib/Drupal/Core/Entity/EntityAccessControlHandler.php13
1 files changed, 13 insertions, 0 deletions
diff --git a/core/lib/Drupal/Core/Entity/EntityAccessControlHandler.php b/core/lib/Drupal/Core/Entity/EntityAccessControlHandler.php
index 1530693..86668bc 100644
--- a/core/lib/Drupal/Core/Entity/EntityAccessControlHandler.php
+++ b/core/lib/Drupal/Core/Entity/EntityAccessControlHandler.php
@@ -303,6 +303,19 @@ class EntityAccessControlHandler extends EntityHandlerBase implements EntityAcce
// Get the default access restriction that lives within this field.
$default = $items ? $items->defaultAccess($operation, $account) : AccessResult::allowed();
+ // Explicitly disallow changing the entity ID and entity UUID.
+ if ($operation === 'edit') {
+ if ($field_definition->getName() === $this->entityType->getKey('id')) {
+ return $return_as_object ? AccessResult::forbidden('The entity ID cannot be changed') : FALSE;
+ }
+ elseif ($field_definition->getName() === $this->entityType->getKey('uuid')) {
+ // UUIDs can be set when creating an entity.
+ if ($items && ($entity = $items->getEntity()) && !$entity->isNew()) {
+ return $return_as_object ? AccessResult::forbidden('The entity UUID cannot be changed')->addCacheableDependency($entity) : FALSE;
+ }
+ }
+ }
+
// Get the default access restriction as specified by the access control
// handler.
$entity_default = $this->checkFieldAccess($operation, $field_definition, $account, $items);