diff --git a/core/modules/editor/tests/src/Kernel/QuickEditIntegrationTest.php b/core/modules/editor/tests/src/Kernel/QuickEditIntegrationTest.php index d62cb681aee62991ed135ec75d487ac3133042dc..c04fe2df41c7e5cedb6aef235b8e740969a2ccb3 100644 --- a/core/modules/editor/tests/src/Kernel/QuickEditIntegrationTest.php +++ b/core/modules/editor/tests/src/Kernel/QuickEditIntegrationTest.php @@ -9,7 +9,7 @@ use Drupal\entity_test\Entity\EntityTest; use Drupal\quickedit\MetadataGenerator; use Drupal\Tests\quickedit\Kernel\QuickEditTestBase; -use Drupal\quickedit_test\MockEditEntityFieldAccessCheck; +use Drupal\quickedit_test\MockQuickEditEntityFieldAccessCheck; use Drupal\editor\EditorController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Event\FilterResponseEvent; @@ -52,7 +52,7 @@ class QuickEditIntegrationTest extends QuickEditTestBase { /** * The access checker object to be used by the metadata generator object. * - * @var \Drupal\quickedit\Access\EditEntityFieldAccessCheckInterface + * @var \Drupal\quickedit\Access\QuickEditEntityFieldAccessCheckInterface */ protected $accessChecker; @@ -165,7 +165,7 @@ public function testEditorSelection() { */ public function testMetadata() { $this->editorManager = $this->container->get('plugin.manager.quickedit.editor'); - $this->accessChecker = new MockEditEntityFieldAccessCheck(); + $this->accessChecker = new MockQuickEditEntityFieldAccessCheck(); $this->editorSelector = $this->container->get('quickedit.editor.selector'); $this->metadataGenerator = new MetadataGenerator($this->accessChecker, $this->editorSelector, $this->editorManager); diff --git a/core/modules/quickedit/quickedit.services.yml b/core/modules/quickedit/quickedit.services.yml index 692ba2f4894ea701f8a474b9f144179ba60e1c4c..3d7d9343788f9cf150d1418076993a0745bc7eb8 100644 --- a/core/modules/quickedit/quickedit.services.yml +++ b/core/modules/quickedit/quickedit.services.yml @@ -3,7 +3,7 @@ services: class: Drupal\quickedit\Plugin\InPlaceEditorManager parent: default_plugin_manager access_check.quickedit.entity_field: - class: Drupal\quickedit\Access\EditEntityFieldAccessCheck + class: Drupal\quickedit\Access\QuickEditEntityFieldAccessCheck tags: - { name: access_check, applies_to: _access_quickedit_entity_field } quickedit.editor.selector: diff --git a/core/modules/quickedit/src/Access/EditEntityFieldAccessCheck.php b/core/modules/quickedit/src/Access/EditEntityFieldAccessCheck.php index 7b3883833c3409d4625599a9f8bc5e4949210a8d..f93790863bb0425bbc54822528b2fab268293a7f 100644 --- a/core/modules/quickedit/src/Access/EditEntityFieldAccessCheck.php +++ b/core/modules/quickedit/src/Access/EditEntityFieldAccessCheck.php @@ -2,61 +2,9 @@ namespace Drupal\quickedit\Access; -use Drupal\Core\Access\AccessResult; -use Drupal\Core\Routing\Access\AccessInterface; -use Drupal\Core\Session\AccountInterface; -use Drupal\Core\Entity\EntityInterface; - /** - * Access check for editing entity fields. + * @deprecated in Drupal 8.4.x and will be removed before Drupal 9.0.0. */ -class EditEntityFieldAccessCheck implements AccessInterface, EditEntityFieldAccessCheckInterface { - - /** - * Checks Quick Edit access to the field. - * - * @param \Drupal\Core\Entity\EntityInterface $entity - * The entity containing the field. - * @param string $field_name - * The field name. - * @param string $langcode - * The langcode. - * @param \Drupal\Core\Session\AccountInterface $account - * The currently logged in account. - * - * @return \Drupal\Core\Access\AccessResultInterface - * The access result. - * - * @todo Use the $account argument: https://www.drupal.org/node/2266809. - */ - public function access(EntityInterface $entity, $field_name, $langcode, AccountInterface $account) { - if (!$this->validateRequestAttributes($entity, $field_name, $langcode)) { - return AccessResult::forbidden(); - } - - return $this->accessEditEntityField($entity, $field_name); - } - - /** - * {@inheritdoc} - */ - public function accessEditEntityField(EntityInterface $entity, $field_name) { - return $entity->access('update', NULL, TRUE)->andIf($entity->get($field_name)->access('edit', NULL, TRUE)); - } - - /** - * Validates request attributes. - */ - protected function validateRequestAttributes(EntityInterface $entity, $field_name, $langcode) { - // Validate the field name and language. - if (!$field_name || !$entity->hasField($field_name)) { - return FALSE; - } - if (!$langcode || !$entity->hasTranslation($langcode)) { - return FALSE; - } - - return TRUE; - } +class EditEntityFieldAccessCheck extends QuickEditEntityFieldAccessCheck { } diff --git a/core/modules/quickedit/src/Access/EditEntityFieldAccessCheckInterface.php b/core/modules/quickedit/src/Access/EditEntityFieldAccessCheckInterface.php index c7f14e261ac033cfd304be237f430dbb5f39801b..cfdb32df579bc4ce3b11cec54496041cd653aaff 100644 --- a/core/modules/quickedit/src/Access/EditEntityFieldAccessCheckInterface.php +++ b/core/modules/quickedit/src/Access/EditEntityFieldAccessCheckInterface.php @@ -2,24 +2,9 @@ namespace Drupal\quickedit\Access; -use Drupal\Core\Entity\EntityInterface; - /** - * Access check for editing entity fields. + * @deprecated in Drupal 8.4.x and will be removed before Drupal 9.0.0. */ -interface EditEntityFieldAccessCheckInterface { - - /** - * Checks access to edit the requested field of the requested entity. - * - * @param \Drupal\Core\Entity\EntityInterface $entity - * The entity. - * @param string $field_name - * The field name. - * - * @return \Drupal\Core\Access\AccessResultInterface - * The access result. - */ - public function accessEditEntityField(EntityInterface $entity, $field_name); +interface EditEntityFieldAccessCheckInterface extends QuickEditEntityFieldAccessCheckInterface { } diff --git a/core/modules/quickedit/src/Access/QuickEditEntityFieldAccessCheck.php b/core/modules/quickedit/src/Access/QuickEditEntityFieldAccessCheck.php new file mode 100644 index 0000000000000000000000000000000000000000..5404b04885482c70e17367734dcff9d5b570c47b --- /dev/null +++ b/core/modules/quickedit/src/Access/QuickEditEntityFieldAccessCheck.php @@ -0,0 +1,62 @@ +validateRequestAttributes($entity, $field_name, $langcode)) { + return AccessResult::forbidden(); + } + + return $this->accessEditEntityField($entity, $field_name); + } + + /** + * {@inheritdoc} + */ + public function accessEditEntityField(EntityInterface $entity, $field_name) { + return $entity->access('update', NULL, TRUE)->andIf($entity->get($field_name)->access('edit', NULL, TRUE)); + } + + /** + * Validates request attributes. + */ + protected function validateRequestAttributes(EntityInterface $entity, $field_name, $langcode) { + // Validate the field name and language. + if (!$field_name || !$entity->hasField($field_name)) { + return FALSE; + } + if (!$langcode || !$entity->hasTranslation($langcode)) { + return FALSE; + } + + return TRUE; + } + +} diff --git a/core/modules/quickedit/src/Access/QuickEditEntityFieldAccessCheckInterface.php b/core/modules/quickedit/src/Access/QuickEditEntityFieldAccessCheckInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..1428b4829a4b64810e04662d5f94dc0a9dba5e03 --- /dev/null +++ b/core/modules/quickedit/src/Access/QuickEditEntityFieldAccessCheckInterface.php @@ -0,0 +1,25 @@ +accessChecker = $access_checker; $this->editorSelector = $editor_selector; $this->editorManager = $editor_manager; diff --git a/core/modules/quickedit/tests/modules/src/MockEditEntityFieldAccessCheck.php b/core/modules/quickedit/tests/modules/src/MockEditEntityFieldAccessCheck.php index b5d94564b1da08716dfa4d1c808a1661577e47b7..7596aa87c320efb78e9633642288cfa2dfdff90d 100644 --- a/core/modules/quickedit/tests/modules/src/MockEditEntityFieldAccessCheck.php +++ b/core/modules/quickedit/tests/modules/src/MockEditEntityFieldAccessCheck.php @@ -2,19 +2,9 @@ namespace Drupal\quickedit_test; -use Drupal\Core\Entity\EntityInterface; -use Drupal\quickedit\Access\EditEntityFieldAccessCheckInterface; - /** - * Access check for editing entity fields. + * @deprecated in Drupal 8.4.x and will be removed before Drupal 9.0.0. */ -class MockEditEntityFieldAccessCheck implements EditEntityFieldAccessCheckInterface { - - /** - * {@inheritdoc} - */ - public function accessEditEntityField(EntityInterface $entity, $field_name) { - return TRUE; - } +class MockEditEntityFieldAccessCheck extends MockQuickEditEntityFieldAccessCheck { } diff --git a/core/modules/quickedit/tests/modules/src/MockQuickEditEntityFieldAccessCheck.php b/core/modules/quickedit/tests/modules/src/MockQuickEditEntityFieldAccessCheck.php new file mode 100644 index 0000000000000000000000000000000000000000..2459c50f08531046b853beb6cf77e7b2615154e2 --- /dev/null +++ b/core/modules/quickedit/tests/modules/src/MockQuickEditEntityFieldAccessCheck.php @@ -0,0 +1,20 @@ +editorManager = $this->container->get('plugin.manager.quickedit.editor'); - $this->accessChecker = new MockEditEntityFieldAccessCheck(); + $this->accessChecker = new MockQuickEditEntityFieldAccessCheck(); $this->editorSelector = new EditorSelector($this->editorManager, $this->container->get('plugin.manager.field.formatter')); $this->metadataGenerator = new MetadataGenerator($this->accessChecker, $this->editorSelector, $this->editorManager); } diff --git a/core/modules/quickedit/tests/src/Unit/Access/EditEntityFieldAccessCheckTest.php b/core/modules/quickedit/tests/src/Unit/Access/QuickEditEntityFieldAccessCheckTest.php similarity index 91% rename from core/modules/quickedit/tests/src/Unit/Access/EditEntityFieldAccessCheckTest.php rename to core/modules/quickedit/tests/src/Unit/Access/QuickEditEntityFieldAccessCheckTest.php index d7ceb59bbc0f33164f9fa0a815ac0903b9b93d22..9f350576d99c76b8aeff5713c78122a2a3ccba55 100644 --- a/core/modules/quickedit/tests/src/Unit/Access/EditEntityFieldAccessCheckTest.php +++ b/core/modules/quickedit/tests/src/Unit/Access/QuickEditEntityFieldAccessCheckTest.php @@ -5,21 +5,21 @@ use Drupal\Core\Access\AccessResult; use Drupal\Core\Cache\Context\CacheContextsManager; use Drupal\Core\DependencyInjection\Container; -use Drupal\quickedit\Access\EditEntityFieldAccessCheck; +use Drupal\quickedit\Access\QuickEditEntityFieldAccessCheck; use Drupal\Tests\UnitTestCase; use Drupal\Core\Language\LanguageInterface; /** - * @coversDefaultClass \Drupal\quickedit\Access\EditEntityFieldAccessCheck + * @coversDefaultClass \Drupal\quickedit\Access\QuickEditEntityFieldAccessCheck * @group Access * @group quickedit */ -class EditEntityFieldAccessCheckTest extends UnitTestCase { +class QuickEditEntityFieldAccessCheckTest extends UnitTestCase { /** * The tested access checker. * - * @var \Drupal\quickedit\Access\EditEntityFieldAccessCheck + * @var \Drupal\quickedit\Access\QuickEditEntityFieldAccessCheck */ protected $editAccessCheck; @@ -27,7 +27,7 @@ class EditEntityFieldAccessCheckTest extends UnitTestCase { * {@inheritdoc} */ protected function setUp() { - $this->editAccessCheck = new EditEntityFieldAccessCheck(); + $this->editAccessCheck = new QuickEditEntityFieldAccessCheck(); $cache_contexts_manager = $this->prophesize(CacheContextsManager::class); $cache_contexts_manager->assertValidTokens()->willReturn(TRUE); @@ -40,7 +40,7 @@ protected function setUp() { /** * Provides test data for testAccess(). * - * @see \Drupal\Tests\edit\Unit\quickedit\Access\EditEntityFieldAccessCheckTest::testAccess() + * @see \Drupal\Tests\edit\Unit\quickedit\Access\QuickEditEntityFieldAccessCheckTest::testAccess() */ public function providerTestAccess() { $data = array();