hook_node_access hook 에 대한 D7 api 문서에서 찾은 코드 스 니펫을 사용했습니다 .
이 코드는 "전자 책보기"권한이있는 사용자에게 "전자 책"컨텐츠를 볼 수있는 액세스 권한을 부여합니다.
hook_permission ()을 구현하여 액세스를 제어 할 수있는 새로운 권한이 필요합니다.
/**
* Implements hook_permission().
*/
function mymodule_permission() {
return array(
'view ebook' => array(
'title' => t('View Ebook'),
'description' => t('View Ebook nodes.'),
),
);
}
hook_node_access ()를 구현함으로써 Drupal은 노드에 대한 액세스 권한을 부여하거나 거부 할 수 있습니다.
/**
* Implements hook_node_access().
*/
function mymodule_node_access($node, $op, $account) {
// Checks for an ebook node in view mode.
if (is_object($node) && $node->type === 'ebook' && $op === 'view') {
// Grants permission to view the node if the current user has an role
// with the permission 'view ebook'.
if (user_access('view ebook')) {
return NODE_ACCESS_ALLOW;
}
// Otherwise disallows access to view the node.
return NODE_ACCESS_DENY;
}
// For all other nodes and other view modes, don't affect the access.
return NODE_ACCESS_IGNORE;
}
다른 권한 (편집, 삭제 등)은 일반적인 Drupal 권한을 통해 처리 할 수 있습니다.
선택적으로 hook_query_TAG_NAME_alter를 구현하여 관리자 개요에서 컨텐츠를 제거 할 수 있습니다.
/**
* Implements hook_query_TAG_NAME_alter().
*/
function mymodule_query_node_admin_filter_alter(QueryAlterableInterface $query) {
if (!user_access('view ebook')) {
$query->condition('n.type', 'ebook', '!=');
}
}