¿Hay alguna forma de evitar que los usuarios anónimos puedan ver nodos de un tipo de contenido, como un bloque o una vista?
Puedo controlar el acceso con una vista, pero si conozco el enlace de un nodo, puedo verlo sin iniciar sesión primero.
Puede controlar el acceso a los nodos en el 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();
}
Esto controla el acceso directo al nodo, no el acceso en las vistas. Pero esto es lo que probablemente quieras.
Su mejor opción es usar Rabbit Hole , o Content Access cuando tenga una versión actualizada.
Madriguera del conejo
Acceso al contenido
Tenga en cuenta que lo que creo que desea es bloquear todo el acceso a un nodo de un tipo de contenido, y solo Content Access lo cumplirá a través de Rabbit Hole.
Más allá de eso, creo que estaría buscando implementar su propio control de acceso si ninguno de estos es adecuado.
fuente
Tal vez desee intentar usar el módulo Grupo , que permite crear colecciones arbitrarias de su contenido y usuarios en su sitio, y otorgar permisos de control de acceso en esas colecciones. Está disponible a partir de D7, y también tiene una versión D8. Crea grupos como entidades, haciéndolos totalmente desplegables, extensibles y exportables. Cada grupo puede tener usuarios, roles y permisos adjuntos (consulte " ¿Cuáles son los diversos roles admitidos por el módulo Grupo? " Para obtener más detalles al respecto).
Para esta pregunta específica, habilitaría el
gnode
submódulo, y para cada tipo de grupo definiría los permisos apropiados (ver, editar, eliminar, etc.) para los distintos Tipos de contenido.Parece que desea otorgar acceso a lo que, en el Grupo, se llama "Miembros" y "Extraños" (= usuarios registrados que no son miembros de un grupo). Pero no permitiría el acceso a "Anónimo" (visitantes del sitio que no están registrados).
Recursos
fuente
Puede usar el módulo Permisos de vista de nodo .
Habilítelo y luego puede asignar qué roles pueden ver qué tipos de contenido en la ruta 'admin / people / permissions' en la sección 'Permisos de vista de nodo'
fuente