I want anonymous users to be able to access nodes that are promoted to the front page. (They can't access to nodes that are not promoted.) It seems hook_node_access()
isn't seem called for anonymous users. I tried using hook_node_grants()
and hook_node_access_records()
, but the code I am using doesn't seem to give anonymous users access to nodes promoted to front page.
function myModule_node_grants(\Drupal\Core\Session\AccountInterface $account, $op) {
return ['show_promoted_news' => [9999]];
}
function myModule_node_access_records(\Drupal\node\NodeInterface $node) {
$grants = [];
if ($node->isPublished() and $node->isPromoted() and $node->getType() == 'article') {
$grants[] = [
'realm' => 'show_promoted_news',
'gid' => 9999,
'grant_view' => 1,
'grant_update' => 0,
'grant_delete' => 0,
'langcode' => 'en'
];
}
return $grants;
}
The access content permission is overriding the grants I give to the anonymous users, who can't access published content. Adding a greater priority does nothing.
I'm being forced to allow anonymous users to access content and override that when I don't want them to have access with hook_node_access()
.