diff --git a/core/modules/datetime/tests/src/Functional/DateTestBase.php b/core/modules/datetime/tests/src/Functional/DateTestBase.php index 805ea0d4d9d4cf12ef1167e1bc8ff19094df9401..4fce222082a9bd414376766530025523e57a7390 100644 --- a/core/modules/datetime/tests/src/Functional/DateTestBase.php +++ b/core/modules/datetime/tests/src/Functional/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/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php b/core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php index 17fca561265b2ea43c9cade7158ebd964401d9c4..85b056e6575baf163e274851bf997f055d30bfc4 100644 --- a/core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php +++ b/core/modules/field_ui/tests/src/Functional/ManageFieldsFunctionalTest.php @@ -85,6 +85,7 @@ protected function setUp(): void { $admin_user = $this->drupalCreateUser([ 'access content', 'administer content types', + 'bypass node access', 'administer node fields', 'administer node form display', 'administer node display', diff --git a/core/modules/node/node.routing.yml b/core/modules/node/node.routing.yml index 962f21c0ccdb5fbef74d9b97415311e4c60980dd..7d3f2f3ea8ca088c69edc7b6d96ec38f41208073 100644 --- a/core/modules/node/node.routing.yml +++ b/core/modules/node/node.routing.yml @@ -22,7 +22,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}' @@ -30,7 +30,7 @@ node.add: _entity_form: 'node.default' _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 25759b3be176d0d7a3d0f570d2394bfefa1f49ab..f4c70183dbb82f367e9c9da772d709a781b42400 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_type.manager'] + deprecated: The "%service_id%" service is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use _entity_create_access or _entity_create_any_access access checks instead. See https://www.drupal.org/node/2836069 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 5a61b05d9494d8d414c9d9d712b4b68c048d6015..1829b5d54fca413ba60052299bbb3c1ff757fb0e 100644 --- a/core/modules/node/src/Access/NodeAddAccessCheck.php +++ b/core/modules/node/src/Access/NodeAddAccessCheck.php @@ -12,6 +12,11 @@ * Determines access to for node add pages. * * @ingroup node_access + * + * @deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. Use + * _entity_create_access or _entity_create_any_access access checks instead. + * + * @see https://www.drupal.org/node/2836069 */ 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 05360296d84c08359b33685aae6f07107cd04094..d003f0651576501c8113154202539ca0633e04da 100644 --- a/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php +++ b/core/modules/node/tests/src/Functional/NodeAccessMenuLinkTest.php @@ -38,6 +38,7 @@ protected function setUp(): void { $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 5184c20bc28ec4deb4a271924314647d85da4937..2cbb0fd3c4ba0f566dbcbf82600e4623a0949c08 100644 --- a/core/modules/node/tests/src/Functional/NodeCreationTest.php +++ b/core/modules/node/tests/src/Functional/NodeCreationTest.php @@ -108,6 +108,13 @@ public function testNodeCreation() { $this->drupalLogin($admin_user); $this->drupalGet('node/add/page'); $this->assertSession()->fieldNotExists('edit-revision', NULL); + + // Check that a user with 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->assertSession()->statusCodeEquals(403); } /** diff --git a/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php b/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php index fbfb37979404a34e99c4ffa4b3f8b40f9d5bdb4a..07dd0af2a552311c75b60bdb8724fc8c3e200bdf 100644 --- a/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php +++ b/core/modules/node/tests/src/Functional/NodeTypeTranslationTest.php @@ -59,6 +59,7 @@ protected function setUp(): void { $admin_permissions = [ 'administer content types', + 'bypass node access', 'administer node fields', 'administer languages', 'administer site configuration', diff --git a/core/modules/page_cache/tests/src/Functional/PageCacheTagsIntegrationTest.php b/core/modules/page_cache/tests/src/Functional/PageCacheTagsIntegrationTest.php index baad8c5309d907d726422d0611870729ec2d7d16..65539ecb6dcf352fb78d8ba7ae99719a521993ea 100644 --- a/core/modules/page_cache/tests/src/Functional/PageCacheTagsIntegrationTest.php +++ b/core/modules/page_cache/tests/src/Functional/PageCacheTagsIntegrationTest.php @@ -109,6 +109,7 @@ public function testPageCacheTags() { 'node:' . $node_1->id(), 'user:' . $author_1->id(), 'config:filter.format.basic_html', + 'config:node_type_list', 'config:color.theme.bartik', 'config:system.menu.account', 'config:system.menu.tools', @@ -150,6 +151,7 @@ public function testPageCacheTags() { 'user:' . $author_2->id(), 'config:color.theme.bartik', 'config:filter.format.full_html', + 'config:node_type_list', 'config:system.menu.account', 'config:system.menu.tools', 'config:system.menu.footer',