function node_node_access

Same name and namespace in other branches
  1. 7.x modules/node/node.module \node_node_access()
  2. 9 core/modules/node/node.module \node_node_access()
  3. 8.9.x core/modules/node/node.module \node_node_access()
  4. 10 core/modules/node/node.module \node_node_access()

Implements hook_ENTITY_TYPE_access().

Related topics

File

core/modules/node/node.module, line 759

Code

function node_node_access(NodeInterface $node, $operation, AccountInterface $account) {
    $type = $node->bundle();
    // Note create access is handled by hook_ENTITY_TYPE_create_access().
    switch ($operation) {
        case 'update':
            $access = AccessResult::allowedIfHasPermission($account, 'edit any ' . $type . ' content');
            if (!$access->isAllowed() && $account->hasPermission('edit own ' . $type . ' content')) {
                $access = $access->orIf(AccessResult::allowedIf($account->id() == $node->getOwnerId())
                    ->cachePerUser()
                    ->addCacheableDependency($node));
            }
            break;
        case 'delete':
            $access = AccessResult::allowedIfHasPermission($account, 'delete any ' . $type . ' content');
            if (!$access->isAllowed() && $account->hasPermission('delete own ' . $type . ' content')) {
                $access = $access->orIf(AccessResult::allowedIf($account->id() == $node->getOwnerId()))
                    ->cachePerUser()
                    ->addCacheableDependency($node);
            }
            break;
        default:
            $access = AccessResult::neutral();
    }
    return $access;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.