Вы здесь

Как закрыть доступ к материалам для пользователя используя связи между текущим пользователем и автором материала?

1

Подскажите как правильно закрыть доступ к материалам для пользователя используя связи между текущим пользователем и автором материала?. в hook_node_grants мне не хватает самого материала, чтобы из него получить автора материала и проверить связи между пользователями. в hook_node_access я закрыл только страницу материала, как закрыть во вьюхе?

Версия Drupal: 
7.x
Категория: 
Access controlNode API
Вопрос задан 05.11.2017 - 11:34

Ответы

0

https://niklan.net/blog/63 - тут подробно описано. В hook_node_access_records пишется нужная вам логика. Т.е. загружаем ноду (+автора ноды), загружаем global user (current), сравниваем что надо, выдаем current user нужные уровни доступа для этой ноды. Запускаем ребилд прав доступа, все - с этого момента views знает что показывать, что нет.

Ответ дан 05.11.2017 - 13:13

я изначально так и сделал, в том смысле что по примеру создал сделал условия. однако там же в hook_node_grants приводится примеры как раздавать разные уровни доступа. и чтобы написать условия там, не хватает массива с нодой.
У меня 4 уровня доступа к материалу, получается я должен прописать

function module_node_grants($account, $op) {
if ($op == 'view') {
$grants[module_ACCESS_REALM] = array(
module_ACCESS_ALL,
module_ACCESS_GROUP,
module_ACCESS_FRIEND,
module_ACCESS_ME
);
return $grants;
}
}

а в самом

function module_node_access_records($node) {
}

писать условия? просто я так делал, только не ребилдил права, может поэтому не работало.

Комментарий оставлен 05.11.2017 - 14:19