I have a hook_node_access function that denies users view access to a page node if the node has a certain tag and they are not an authenticated user.
This is working fine for viewing the page directly but unregistered users can still see the nodes that they should be denied in a views powered search page. When they click through to the page they are denied access.
I was using the taxonomy access control module to do this before and that hid the result from search, I had to disable it because of a conflict with another module.
Is there anything extra I need to do to make views recognise these permissions?
Here's my hook and helper function:
function mymod_page_perms_node_access($node, $op, $account){
if ($op === 'view' && in_array($node->type, array('page','publication'))){
$access_level = field_get_items('node', $node, 'field_access_level');
if (count($access_level)){
$access_level = $access_level[0]['tid'];
$accessIDtoRoleID = array(
'68' => '7',
'69' => '2');
if (isset($accessIDtoRoleID[$access_level])){
global $user;
$requiredRole = $accessIDtoRoleID[$access_level];
if (mymod_page_perms_check_allowed_roles_array(array($requiredRole),$user->roles)){
return NODE_ACCESS_ALLOW;
} else {
return NODE_ACCESS_DENY;
}
}
}
}
return NODE_ACCESS_IGNORE;
}
function mymod_page_perms_check_allowed_roles_array($allowedRolesIds,$roles){
foreach ($roles as $rid => $role){
if (in_array($rid, $allowedRolesIds)){
return true;
}
}
return false;
}
thanks