Nodeaccess

Proporciona control de acceso por nodo, permitiendo gestionar permisos (ver, editar, eliminar) para nodos individuales por rol de usuario y usuarios específicos.

nodeaccess
9,957 sites
53
drupal.org

Install

Drupal 10 v8.x-1.0
composer require 'drupal/nodeaccess:8.x-1.0'
Drupal 9, 8 v8.x-1.1
composer require 'drupal/nodeaccess:8.x-1.1'

Overview

Nodeaccess permite a los administradores del sitio gestionar permisos para nodos de forma individual por rol y usuario. A diferencia de los permisos estándar de Drupal que se aplican globalmente, este módulo implementa un control de acceso detallado por nodo que funciona sin requerir categorización por taxonomía.

Con este módulo, puedes restringir el acceso a cualquier nodo individual y asignar permisos para ver, editar o eliminar cada nodo por usuario o rol. Una vez habilitado, aparece una pestaña 'Grants' en las páginas de nodos donde se pueden configurar los permisos para ese nodo específico.

El módulo se integra profundamente con el sistema de acceso a nodos de Drupal a través de hook_node_access_records() y hook_node_grants(), proporcionando tres ámbitos de acceso: nodeaccess_role (para acceso basado en roles), nodeaccess_user (para acceso específico de usuario) y nodeaccess_author (para acceso basado en autoría).

Features

  • Control de acceso por nodo con permisos de ver, editar y eliminar para roles y usuarios individuales
  • Permisos basados en autoría que pueden configurarse por tipo de contenido
  • Visibilidad configurable de roles en la pestaña de grants con alias de nombres de visualización y ordenación por peso
  • Permisos predeterminados por tipo de contenido que se aplican a nuevos nodos
  • Permisos por tipo de contenido que permiten delegar la gestión de grants a roles de usuario específicos
  • La disponibilidad de la pestaña Grants puede habilitarse/deshabilitarse por tipo de contenido
  • Funcionalidad de búsqueda de usuarios en la pestaña de grants que soporta tanto autocompletado (con acceso a perfiles de usuario) como entrada de ID de usuario
  • Soporte para contenido multilingüe con manejo adecuado del estado de publicación de traducciones
  • Actualizaciones automáticas de configuración cuando se crean, actualizan o eliminan roles o tipos de contenido

Use Cases

Restringir páginas específicas a ciertos usuarios

Usa Nodeaccess cuando necesites restringir el acceso a nodos específicos a ciertos usuarios sin crear reglas de acceso complejas basadas en taxonomía. Habilita la pestaña Grants para el tipo de contenido, luego en la pestaña Grants de cada nodo restringido, elimina el acceso de visualización de los roles anónimo y autenticado, y otorga acceso de visualización solo a usuarios específicos o roles personalizados.

Control de acceso al contenido por editores

Permite que los editores de contenido controlen quién puede acceder a su contenido. Crea un rol 'Editor' con 'nodeaccess grant [type] permissions', habilita la pestaña Grants para ese tipo de contenido, y los editores podrán gestionar el acceso de su propio contenido a través de la pestaña Grants.

Contenido solo para autor antes de publicación

Configura tipos de contenido para que los autores siempre puedan editar su propio contenido pero otros no puedan ver borradores no publicados. Establece permisos de autor para grant_view, grant_update y grant_delete en la configuración del tipo de contenido, mientras mantienes los permisos de rol restringidos.

Tipos de contenido privados

Crea tipos de contenido privados donde solo el autor y los administradores tienen acceso por defecto. Deja todos los permisos de rol desmarcados en la configuración del tipo de contenido pero habilita los permisos de autor para ver/editar/eliminar. Los autores pueden entonces compartir acceso selectivamente usando la pestaña Grants.

Acceso al contenido basado en equipos

Crea roles para diferentes equipos (ej., 'Equipo de Marketing', 'Equipo de Desarrollo') y usa Nodeaccess para otorgar acceso al contenido a equipos completos. Habilita estos roles en la pestaña Grants y los editores pueden asignar acceso por equipo por nodo.

Tips

  • Haz una copia de seguridad de tu base de datos antes de instalar Nodeaccess ya que cambia significativamente el comportamiento de acceso al contenido
  • Para emular los permisos estándar de Drupal, otorga permiso de visualización a usuarios anónimos y autenticados para cada tipo de contenido
  • Los grants de usuario son aditivos a los grants de rol - un usuario obtiene acceso si CUALQUIERA de sus roles o su grant de usuario individual lo permite
  • Los permisos de Autor en la configuración del tipo de contenido no pueden ser anulados en nodos individuales - siempre se aplican al autor del nodo
  • Usa la función 'Nombre de visualización' para proporcionar nombres de rol amigables en la pestaña de grants si los nombres de máquina de tus roles son técnicos
  • Al otorgar permisos a usuarios individuales, recuerda marcar la casilla '¿Mantener?' o el usuario será eliminado al guardar

Technical Details

Admin Pages 2
Configuración de Nodeaccess /admin/config/people/nodeaccess

Configura los ajustes globales de nodeaccess incluyendo qué roles aparecen en las pestañas de grants de nodos, permisos predeterminados para cada tipo de contenido, y qué operaciones de grant están disponibles.

Grants /node/{node}/grants

Configura permisos de acceso para un nodo específico. Permite establecer permisos de ver, editar y eliminar para roles seleccionados y usuarios individuales.

Permissions 3
Administrar Nodeaccess

Acceder a las páginas de administración de Node Access en /admin/config/people/nodeaccess. También otorga acceso a la pestaña Grants en todos los tipos de contenido donde la pestaña está habilitada.

Otorgar todos los permisos de nodo

Acceder a la pestaña Grants de todos los nodos independientemente del tipo de contenido.

[Tipo de contenido]: otorgar permisos de nodo

Acceder a la pestaña Grants para nodos del tipo de contenido especificado. Se genera dinámicamente para cada tipo de contenido (ej., 'nodeaccess grant article permissions').

Hooks 8
hook_node_access_records

Proporciona registros de acceso para nodos. Devuelve grants para roles, usuarios y autores basados en configuraciones específicas del nodo (de la tabla nodeaccess) o valores predeterminados del tipo de contenido (de nodeaccess.settings).

hook_node_grants

Proporciona IDs de grant para una cuenta de usuario. Mapea los roles del usuario a IDs de grant nodeaccess_role y proporciona ID de usuario para los ámbitos nodeaccess_user y nodeaccess_author.

hook_node_type_insert

Agrega automáticamente un nuevo tipo de contenido a la configuración de nodeaccess con permisos predeterminados (sin acceso) para todos los roles y autor.

hook_node_type_delete

Elimina el tipo de contenido borrado de la configuración de nodeaccess.

hook_node_delete

Elimina grants específicos del nodo de la tabla nodeaccess cuando se elimina un nodo.

hook_user_role_insert

Agrega un nuevo rol a la configuración de nodeaccess incluyendo map_rid_gid, roles_settings y bundles_roles_grants.

hook_user_role_update

Actualiza el nombre de visualización del rol en la configuración de nodeaccess cuando cambia la etiqueta de un rol.

hook_user_role_delete

Elimina el rol borrado de toda la configuración de nodeaccess.

Troubleshooting 5
Ningún nodo es accesible después de habilitar el módulo

Este es el comportamiento esperado. Después de habilitar Nodeaccess, debes configurar permisos en la página de configuración (/admin/config/people/nodeaccess). Como mínimo, otorga permiso de visualización a usuarios anónimos y/o autenticados para cada tipo de contenido para emular el comportamiento estándar de Drupal.

La pestaña Grants no aparece en los nodos

Verifica que 'Mostrar pestaña de grant para este tipo de contenido' esté habilitado en la configuración de Nodeaccess para ese tipo de contenido. También verifica que el usuario tenga el permiso 'administer nodeaccess' o el permiso específico 'nodeaccess grant [type] permissions' para ese tipo de contenido.

No se puede revocar permiso de un usuario individual

El sistema de acceso de Drupal es aditivo. Si un usuario tiene acceso a través de su rol, no puedes revocarlo para ese usuario individual. Por ejemplo, si los usuarios autenticados tienen permiso de edición, no puedes eliminar el acceso de edición para un usuario autenticado específico.

Los cambios no tienen efecto

Después de cambiar configuraciones en la página de configuración de Nodeaccess, el acceso a nodos se marca automáticamente para reconstrucción. Si los cambios aún no se aplican, ejecuta manualmente la reconstrucción de acceso a nodos en /admin/reports/status/rebuild.

El usuario administrador sigue teniendo acceso a pesar de los grants restringidos

Los usuarios administradores evitan todas las restricciones de acceso a nodos por diseño. Este es el comportamiento del núcleo de Drupal y no puede ser anulado por Nodeaccess.

Security Notes 5
  • Después de habilitar este módulo, ningún contenido es accesible hasta que se configuren los permisos - planifica tus reglas de acceso antes de habilitarlo en un sitio de producción
  • Los usuarios administradores siempre evitan las restricciones de acceso a nodos y no pueden ser restringidos usando este módulo
  • El permiso 'administer nodeaccess' debe restringirse a administradores de confianza ya que permite modificar todas las reglas de acceso
  • Otorgar a un rol permisos de editar o eliminar en un tipo de contenido afecta a todos los nodos de ese tipo a menos que se anulen en nodos específicos
  • Considera usar 'nodeaccess grant [type] permissions' específicos por tipo de contenido en lugar de 'grant node permissions' para una mejor delegación de control de acceso