Хук hook_node_access()
предназначен для тонкой настройки прав пользователей при работе с материалами. Например с помощью него можно дать одному из пользователей права на редактирование определённого типа материалов (в то время, как другие пользователи такого права не имеют):
function mymodule_node_access($node, $op, $account) {
$type = is_string($node) ? $node : $node->type;
if ($type == 'page' && $op == 'update' && $account->uid == 123) {
return NODE_ACCESS_ALLOW;
}
}
или например запретить пользователям, зарегистрированным менее суток назад, создавать любые материалы:
function mymodule_node_access($node, $op, $account) {
if ($op == 'create' && REQUEST_TIME - $account->created < 60*60*24) {
return NODE_ACCESS_DENY;
}
}
Замечания:
— хук не вызывается для юзера #1, т.е. ему всё разрешено
— хук не вызывается при просмотре списка нод, например в RSS, на странице node
или в блоке последних материалов
Написанное актуально для
Drupal 7
Комментарии
Для ещё более тонкой настройки существует система Grants, которой лучше сторониться архитектурно. Она влезает в запросы и к спискам нод и всё усложняет.
и hook_node_access, и Node Grants - хорошие вещи!
А во Views UI есть настройка "Disable SQL rewriting", указывающая вьюхе не проверять права доступа.
существует ли аналог hook_node_access() для пользователей? например, hook_user_access() или hook_entity_access()
плюс хука node_access - прост в понимании
минус - он безтолковый по большому счету(запросам плевать на то что в нем. только на ноду не попадешь если он запрещает, при том что вьюшкой можно вывести что угодно и к нему будет доступ).
Решение hook_node_grants + hook_node_access_records
полезная ссылка - http://www.agileapproach.com/blog-entry/drupal-7-node-access-grants-loc…
Не в обиду xandeadx.
Ссылка на хорошее описание про настройку прав http://niklan.net/blog/63
А как можно скрыть только часть текста для анонимов в drupal 7
Добавить комментарий