Existe uma maneira de evitar que usuários anônimos possam ver um nó de um tipo de conteúdo específico?

9

Existe uma maneira de evitar que usuários anônimos possam ver nós de um tipo de conteúdo, como um bloco ou uma exibição?

Posso controlar o acesso com uma visualização, mas se eu souber o link para um nó, posso vê-lo sem primeiro fazer login.

Frank Giesecke
fonte

Respostas:

10

Você pode controlar o acesso aos nós no gancho hook_node_access ():

mymodule.module:

use Drupal\node\NodeInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Access\AccessResult;

function mymodule_node_access(NodeInterface $node, $op, AccountInterface $account) {
  if ($account->isAnonymous() && $node->gettype() == 'article') {
    return AccessResult::forbidden()->cachePerPermissions();
  }
  return AccessResult::neutral()->cachePerPermissions();
}

Isso controla o acesso direto ao nó, não o acesso nas visualizações. Mas é isso que você provavelmente quer.

4k4
fonte
Acredito que para controlar o acesso também, você usaria hook_node_grants.
Jonathan
4

Sua melhor aposta é usar o Rabbit Hole , ou o Content Access, quando houver uma versão atualizada.

Toca do Coelho

Rabbit Hole é um módulo que adiciona a capacidade de controlar o que deve acontecer quando uma entidade está sendo visualizada em sua própria página. Talvez você tenha um tipo de conteúdo que nunca deve ser exibido em sua própria página, como um tipo de conteúdo de imagem exibido em um carrossel. O Rabbit Hole pode impedir que esse nó seja acessível em sua própria página, através do node / xxx.

Acesso ao conteúdo

Este módulo permite gerenciar permissões para tipos de conteúdo por função e autor. Ele permite que você especifique a visualização personalizada, edite e exclua permissões para cada tipo de conteúdo. Opcionalmente, você pode ativar as configurações de acesso por conteúdo, para personalizar o acesso para cada nó de conteúdo.

Observe que o que eu acredito que você deseja é bloquear todo o acesso a um nó de um tipo de conteúdo - e apenas o Acesso ao Conteúdo cumprirá isso no Rabbit Hole.

Além disso, acho que você gostaria de implementar seu próprio controle de acesso, se nenhum deles servir.

Kevin
fonte
Desculpe perguntar sua resposta Kevin, mas você está familiarizado com o módulo Grupo ? Dê uma olhada no tutorial em vídeo para entender o que quero dizer ... BTW: para o D7, eu também costumava recomendar o "Acesso ao Conteúdo".
Pierre.Vriens
2
Não desde que era OG. Meio pesado de instalar, a menos que haja uma necessidade nesse sentido?
22417 Kevin
" ... desde que era OG "? O que você quer dizer com isso? E sobre "pesado": você OG (se eu concordo) ou o grupo (se eu discordo)?
Pierre.Vriens
Eu sempre só pensei Grupo foi um fork do OG para D8
Kevin
Desculpe (novamente) Kevin, esse não é o caso ... leia mais .
precisa saber é o seguinte
1

Talvez você queira tentar usar o módulo Grupo , que permite criar coleções arbitrárias de seu conteúdo e usuários em seu site e conceder permissões de controle de acesso nessas coleções. Está disponível a partir do D7 e também possui uma versão D8. Ele cria grupos como entidades, tornando-os totalmente em campo, extensíveis e exportáveis. Cada grupo pode ter usuários, funções e permissões anexadas a ele (consulte " Quais são as várias funções suportadas pelo módulo Grupo? " Para obter mais detalhes sobre isso).

Para essa pergunta específica, você gnodeativaria o submódulo e, para cada tipo de grupo, definiria as permissões apropriadas (exibir, editar, excluir etc.) para os vários tipos de conteúdo.

Parece que você deseja conceder acesso ao que, em Grupo, é chamado de "Membros" e "Pessoas de fora" (= usuários conectados que não são membros de um grupo). Mas você não permitirá o acesso a "Anônimo" (visitantes do site que não estão registrados).

Recursos

Pierre.Vriens
fonte
1

Você pode usar o módulo Permissões de Visualização de Nó .

Habilite-o e, em seguida, você pode atribuir quais funções podem exibir quais tipos de conteúdo no caminho 'admin / people / Permissions' na seção 'Permissões de visualização do nó'


fonte