diff --git a/filefield.module b/filefield.module index 9ea8376..e9d78f4 100644 --- a/filefield.module +++ b/filefield.module @@ -183,10 +183,16 @@ function filefield_file_download($filepath) { if (isset($nodes[$content['nid']])) { continue; // Don't check the same node twice. } - if (($node = node_load($content['nid'])) && (node_access('view', $node) && filefield_view_access($field_name, $node))) { - // They have access to the node. - $denied = FALSE; + + // With complex access models, sometimes node_access is not the best access callback + // So load the menu router item instead and use that + if (($node = node_load($content['nid']))) { + $router_item = menu_get_item("node/" . $content['nid']); + if ($router_item['access'] && filefield_view_access($field_name, $node)) { + $denied = FALSE; + } } + if (!$denied && $node->vid == $revision_id) { // If revision is the current revision, grant access. $revision_access = TRUE;