diff --git a/core/modules/node/lib/Drupal/node/NodeAccessController.php b/core/modules/node/lib/Drupal/node/NodeAccessController.php index d7cfd2c..ff44f63 100644 --- a/core/modules/node/lib/Drupal/node/NodeAccessController.php +++ b/core/modules/node/lib/Drupal/node/NodeAccessController.php @@ -31,6 +31,20 @@ public function access(EntityInterface $entity, $operation, $langcode = Language return parent::access($entity, $operation, $langcode, $account); } + public function createAccess($type, $account = NULL) { + if (!$account) { + $account = $GLOBALS['user']; + } + + $configured_types = node_permissions_get_configured_types(); + if (isset($configured_types[$type])) { + if (user_access('create ' . $type . ' content', $account)) { + return NODE_ACCESS_ALLOW; + } + } + return NODE_ACCESS_IGNORE; + } + /** * {@inheritdoc} */ diff --git a/core/modules/node/node.module b/core/modules/node/node.module index fbdf07d..8ec1e47 100644 --- a/core/modules/node/node.module +++ b/core/modules/node/node.module @@ -2462,9 +2462,11 @@ function node_form_system_themes_admin_form_submit($form, &$form_state) { * @see node_menu() */ function node_access($op, $node, $account = NULL, $langcode = NULL) { + $access_controller = entity_access_controller('node'); + if (!$node instanceof EntityInterface) { $type = is_object($node) ? $node->type : $node; - $node = entity_create('node', array('type' => $type)); + return $access_controller->createAccess($type, $account); } // If no language code was provided, default to the node's langcode. @@ -2490,7 +2492,7 @@ function node_access($op, $node, $account = NULL, $langcode = NULL) { $account = user_load($account->uid); } - return entity_access_controller('node')->access($node, $op, $langcode, $account); + return $access_controller->access($node, $op, $langcode, $account); } /** @@ -2501,10 +2503,6 @@ function node_node_access($node, $op, $account) { $configured_types = node_permissions_get_configured_types(); if (isset($configured_types[$type])) { - if ($op == 'create' && user_access('create ' . $type . ' content', $account)) { - return NODE_ACCESS_ALLOW; - } - if ($op == 'update') { if (user_access('edit any ' . $type . ' content', $account) || (user_access('edit own ' . $type . ' content', $account) && ($account->uid == $node->uid))) { return NODE_ACCESS_ALLOW;