diff --git a/core/modules/datetime/src/Tests/DateTestBase.php b/core/modules/datetime/src/Tests/DateTestBase.php index a234ae0..d891e45 100644 --- a/core/modules/datetime/src/Tests/DateTestBase.php +++ b/core/modules/datetime/src/Tests/DateTestBase.php @@ -97,6 +97,7 @@ protected function setUp() { 'administer entity_test content', 'administer entity_test form display', 'administer content types', + 'bypass node access', 'administer node fields', ]); $this->drupalLogin($web_user); diff --git a/core/modules/node/node.routing.yml b/core/modules/node/node.routing.yml index a016e3a..09ad5dc 100644 --- a/core/modules/node/node.routing.yml +++ b/core/modules/node/node.routing.yml @@ -13,7 +13,7 @@ node.add_page: options: _node_operation_route: TRUE requirements: - _node_add_access: 'node' + _entity_create_any_access: 'node' node.add: path: '/node/add/{node_type}' @@ -21,7 +21,7 @@ node.add: _controller: '\Drupal\node\Controller\NodeController::add' _title_callback: '\Drupal\node\Controller\NodeController::addPageTitle' requirements: - _node_add_access: 'node:{node_type}' + _entity_create_access: 'node:{node_type}' options: _node_operation_route: TRUE parameters: diff --git a/core/modules/node/node.services.yml b/core/modules/node/node.services.yml index 2ff32c3..d3ae253 100644 --- a/core/modules/node/node.services.yml +++ b/core/modules/node/node.services.yml @@ -16,6 +16,7 @@ services: access_check.node.add: class: Drupal\node\Access\NodeAddAccessCheck arguments: ['@entity.manager'] + deprecated: The "%service_id%" service is deprecated. Use _entity_create_access or _entity_create_any_access access checks instead. tags: - { name: access_check, applies_to: _node_add_access } access_check.node.preview: diff --git a/core/modules/node/src/Access/NodeAddAccessCheck.php b/core/modules/node/src/Access/NodeAddAccessCheck.php index 8d9d119..b848765 100644 --- a/core/modules/node/src/Access/NodeAddAccessCheck.php +++ b/core/modules/node/src/Access/NodeAddAccessCheck.php @@ -12,6 +12,9 @@ * Determines access to for node add pages. * * @ingroup node_access + * + * @deprecated in Drupal 8.3.0, will be removed before Drupal 9.0.0. Use + * _entity_create_access or _entity_create_any_access access checks instead. */ class NodeAddAccessCheck implements AccessInterface { diff --git a/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php b/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php index 6c5bcd4..f5de308 100644 --- a/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php +++ b/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php @@ -33,6 +33,7 @@ protected function setUp() { $this->contentAdminUser = $this->drupalCreateUser([ 'access content', 'administer content types', + 'bypass node access', 'administer menu' ]); diff --git a/core/modules/node/tests/src/Functional/NodeCreationTest.php b/core/modules/node/tests/src/Functional/NodeCreationTest.php index 4d24901..20ba8d9 100644 --- a/core/modules/node/tests/src/Functional/NodeCreationTest.php +++ b/core/modules/node/tests/src/Functional/NodeCreationTest.php @@ -78,6 +78,13 @@ public function testNodeCreation() { $this->drupalLogin($admin_user); $this->drupalGet('node/add/page'); $this->assertNoFieldById('edit-revision', NULL, 'The revision checkbox is not present.'); + + // Check that a user with user administer content types permission is not + // allowed to create content. + $content_types_admin = $this->drupalCreateUser(['administer content types']); + $this->drupalLogin($content_types_admin); + $this->drupalGet('node/add/page'); + $this->assertResponse(403); } /** diff --git a/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php b/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php index 07e61a0..87e0bfd 100644 --- a/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php +++ b/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php @@ -55,6 +55,7 @@ protected function setUp() { $admin_permissions = [ 'administer content types', + 'bypass node access', 'administer node fields', 'administer languages', 'administer site configuration', diff --git a/core/modules/page_cache/src/Tests/PageCacheTagsIntegrationTest.php b/core/modules/page_cache/src/Tests/PageCacheTagsIntegrationTest.php index 6ec8a29..5cb41d9 100644 --- a/core/modules/page_cache/src/Tests/PageCacheTagsIntegrationTest.php +++ b/core/modules/page_cache/src/Tests/PageCacheTagsIntegrationTest.php @@ -104,6 +104,7 @@ public function testPageCacheTags() { 'user:0', 'user:' . $author_1->id(), 'config:filter.format.basic_html', + 'config:node_type_list', 'config:color.theme.bartik', 'config:search.settings', 'config:system.menu.account', @@ -145,6 +146,7 @@ public function testPageCacheTags() { 'user:' . $author_2->id(), 'config:color.theme.bartik', 'config:filter.format.full_html', + 'config:node_type_list', 'config:search.settings', 'config:system.menu.account', 'config:system.menu.tools',