Estou usando o Drupal 7 e criei um novo tipo de conteúdo chamado "eBook" e criei uma nova função chamada "MonthlySubscriber". Minha intenção é permitir que apenas usuários com o "MonthlySubscriber" visualizem os nós do "eBook". Quando examinei as configurações de permissão de uma função, vi as caixas de seleção que permitem criar, editar e excluir nós desse tipo de conteúdo, mas não existem caixas de seleção para visualizar nós.
Como limito os usuários que podem visualizar os nós do "eBook" a apenas os usuários com a função "MonthlySubscriber"?
Aqui está uma maneira simples de proteger as páginas dos nós (nó / NID) de usuários não privilegiados.
fonte
hook_node_access
não funcionará com nada que "lista" nós, como uma Visualização. Portanto, você pode restringir o acesso à visualizaçãohook_node_access
, mas uma consulta de visualização ou nó personalizado ainda pode mostrar esse nó ao usuário.hook_node_access
é mais útil para o controle editorial, para controlar criar / operações update / deleteO Acesso a Conteúdo não funcionou na minha instalação do Drupal 7; portanto, usei Permissões de Visualização de Nó .
fonte
Para o drupal 7, tente este: Acesso por termo
fonte
A solução hook_menu_alter postada acima por ya.teck funciona, mas entra em conflito com o hook_node_access padrão em seu nome de função. Nesse caso, o hook_menu_alter não é necessário e, portanto, a resposta postada por Denis acima é, na minha opinião, mais precisa e correta. Alterar o menu_item, como é feito, é o primeiro exemplo referenciado que pode ser derrotado por outro módulo mais abaixo no canal.
fonte
Usei um trecho de código encontrado na documentação da API D7 para o gancho hook_node_access .
Este código concederá acesso para visualizar o conteúdo de "e-book" para usuários que tenham a permissão "ver e-book".
Você precisa de uma nova permissão para controlar o acesso implementando hook_permission ().
Ao implementar hook_node_access (), o Drupal pode conceder ou negar o acesso ao nó.
Outras permissões (editar, excluir etc.) podem ser tratadas através das permissões normais do Drupal.
Opcionalmente, você pode remover o conteúdo da visão geral do administrador implementando hook_query_TAG_NAME_alter.
fonte
Eu prefiro usar o módulo Permissões de exibição de nó . É mais simples que o módulo de acesso a conteúdo.
Como no D6, ele adiciona permissões "Visualizar qualquer conteúdo" e "Exibir conteúdo próprio" a qualquer tipo de conteúdo que você escolher.
Passos a seguir:
/admin/config/content/node-view-permissions
e selecione quais tipos de conteúdo você deseja limitar o acesso.Em seguida, vá para
/admin/people/permissions#module-node_view_permissions
e selecione as funções que deseja visualizar o conteúdo. Salve as permissões.Feito!
fonte