diff --git a/core/modules/node/lib/Drupal/node/NodeAccessController.php b/core/modules/node/lib/Drupal/node/NodeAccessController.php index 7e65b3d..0f9cfc5 100644 --- a/core/modules/node/lib/Drupal/node/NodeAccessController.php +++ b/core/modules/node/lib/Drupal/node/NodeAccessController.php @@ -20,7 +20,7 @@ class NodeAccessController extends EntityAccessController { * Implements EntityAccessControllerInterface::viewAccess(). */ public function viewAccess(EntityInterface $node, $langcode = LANGUAGE_DEFAULT, User $account = NULL) { - $account = $account ?: entity_create('user', (array) $GLOBALS['user']); + $account = $account ?: user_load($GLOBALS['user']->uid); if (($access = $this->getCached($node, 'view', $langcode, $account)) !== NULL) { return $access; @@ -53,7 +53,7 @@ public function viewAccess(EntityInterface $node, $langcode = LANGUAGE_DEFAULT, * Implements EntityAccessControllerInterface::createAccess(). */ public function createAccess(EntityInterface $node, $langcode = LANGUAGE_DEFAULT, User $account = NULL) { - $account = $account ?: entity_create('user', (array) $GLOBALS['user']); + $account = $account ?: user_load($GLOBALS['user']->uid); if (($access = $this->getCached($node, 'create', $langcode, $account)) !== NULL) { return $access; @@ -70,7 +70,7 @@ public function createAccess(EntityInterface $node, $langcode = LANGUAGE_DEFAULT * Implements EntityAccessControllerInterface::updateAccess(). */ public function updateAccess(EntityInterface $node, $langcode = LANGUAGE_DEFAULT, User $account = NULL) { - $account = $account ?: entity_create('user', (array) $GLOBALS['user']); + $account = $account ?: user_load($GLOBALS['user']->uid); if (($access = $this->getCached($node, 'update', $langcode, $account)) !== NULL) { return $access; @@ -91,7 +91,7 @@ public function updateAccess(EntityInterface $node, $langcode = LANGUAGE_DEFAULT * Implements EntityAccessControllerInterface::deleteAccess(). */ public function deleteAccess(EntityInterface $node, $langcode = LANGUAGE_DEFAULT, User $account = NULL) { - $account = $account ?: entity_create('user', (array) $GLOBALS['user']); + $account = $account ?: user_load($GLOBALS['user']->uid); if (($access = $this->getCached($node, 'delete', $langcode, $account)) !== NULL) { return $access; diff --git a/core/modules/node/node.module b/core/modules/node/node.module index 28c2673..a0d0358 100644 --- a/core/modules/node/node.module +++ b/core/modules/node/node.module @@ -2594,6 +2594,12 @@ function node_access($op, $node, $account = NULL, $langcode = NULL) { $langcode = $node->langcode; } + // Make sure that if an account is passed, that it is a fully loaded user + // object. + if ($account && !($account instanceof Drupal\user\Plugin\Core\Entity\User)) { + $account = user_load($account->uid); + } + $method = $op . 'Access'; return entity_access_controller('node')->$method($node, $langcode, $account); }