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.
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.
Respostas:
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.
Sua melhor aposta é usar o Rabbit Hole , ou o Content Access, quando houver uma versão atualizada.
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.
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.
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ê gnode
ativaria 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).
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ó'