diff --git a/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/UniqueFieldValueValidator.php b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/UniqueFieldValueValidator.php index d2b1741a3a087b04850a205ada5e7cbb046e3b31..8adbd57f4f12a61159038729b0a0d7385723ecf7 100644 --- a/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/UniqueFieldValueValidator.php +++ b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/UniqueFieldValueValidator.php @@ -25,6 +25,9 @@ public function validate($items, Constraint $constraint) { $query = \Drupal::entityQuery($entity_type_id); + // @todo Don't check access. http://www.drupal.org/node/3171047 + $query->accessCheck(TRUE); + $entity_id = $entity->id(); // Using isset() instead of !empty() as 0 and '0' are valid ID values for // entity types using string IDs. diff --git a/core/modules/migrate/src/Plugin/migrate/process/MakeUniqueEntityField.php b/core/modules/migrate/src/Plugin/migrate/process/MakeUniqueEntityField.php index 10b8dcc3b84a54d1ca3ef8e5cacadb056a1838a5..4b86fd32a45f586605b1297cada4a5284ecd17cf 100644 --- a/core/modules/migrate/src/Plugin/migrate/process/MakeUniqueEntityField.php +++ b/core/modules/migrate/src/Plugin/migrate/process/MakeUniqueEntityField.php @@ -128,6 +128,7 @@ protected function exists($value) { ->entityTypeManager ->getStorage($this->configuration['entity_type']) ->getQuery() + ->accessCheck(FALSE) ->condition($this->configuration['field'], $value); if (!empty($this->configuration['migrated'])) { // Check if each entity is in the ID map. diff --git a/core/modules/migrate/tests/src/Unit/process/MakeUniqueEntityFieldTest.php b/core/modules/migrate/tests/src/Unit/process/MakeUniqueEntityFieldTest.php index 2b9b1c33e873c83aa6144f92db147c50e6310bc0..9b269d9bf3d284711bca3089f5feed358a46d7ba 100644 --- a/core/modules/migrate/tests/src/Unit/process/MakeUniqueEntityFieldTest.php +++ b/core/modules/migrate/tests/src/Unit/process/MakeUniqueEntityFieldTest.php @@ -43,6 +43,9 @@ protected function setUp(): void { $this->entityQuery = $this->getMockBuilder('Drupal\Core\Entity\Query\QueryInterface') ->disableOriginalConstructor() ->getMock(); + $this->entityQuery->expects($this->any()) + ->method('accessCheck') + ->will($this->returnSelf()); $this->entityTypeManager = $this->createMock(EntityTypeManagerInterface::class); $storage = $this->createMock(EntityStorageInterface::class); @@ -189,6 +192,7 @@ public function testMakeUniqueEntityFieldMigrated() { foreach (['forums', 'test_vocab', 'test_vocab1'] as $id) { $query = $this->prophesize(QueryInterface::class); $query->willBeConstructedWith([]); + $query->accessCheck()->willReturn($query); $query->execute()->willReturn($id === 'test_vocab1' ? [] : [$id]); $map[] = ['test_field', $id, NULL, NULL, $query->reveal()]; }