Field Permissions

Establece permisos a nivel de campo para controlar quién puede crear, editar o ver campos específicos en cualquier tipo de entidad.

field_permissions
66,929 sites
161
drupal.org
Drupal 8 Drupal 9 Drupal 10 Drupal 11

Install

Drupal 11, 10, 9 v8.x-1.4
composer require 'drupal/field_permissions:8.x-1.4'
Drupal 8 v8.x-1.3
composer require 'drupal/field_permissions:8.x-1.3'

Overview

El módulo Field Permissions permite a los administradores del sitio establecer permisos granulares a nivel de campo para campos adjuntos a cualquier tipo de entidad (nodes, usuarios, términos de taxonomía, etc.). Esto proporciona un control de acceso detallado más allá de los permisos estándar a nivel de entidad que proporciona Drupal.

Los permisos pueden configurarse para ver o editar campos en todos los contextos, o solo cuando el campo pertenece a contenido propiedad del usuario actual. También se pueden establecer permisos especiales para editar campos durante la creación de entidades.

Los permisos de campo no están habilitados por defecto. Los administradores deben habilitar explícitamente los permisos para cada campo donde se necesite este nivel de control de acceso, manteniendo los sitios simples mientras se permite un control avanzado cuando sea necesario.

Features

  • Control de acceso a nivel de campo para cualquier tipo de entidad (nodes, usuarios, términos de taxonomía, comentarios, etc.)
  • Tres modos de permisos: Público (hereda permisos de entidad), Privado (solo autor y administrador), y Personalizado (matriz completa de permisos)
  • Los permisos personalizados incluyen cinco operaciones por campo: Crear valor propio, Editar valor propio, Editar valor de cualquiera, Ver valor propio, Ver valor de cualquiera
  • Informe centralizado de permisos de campo que muestra el estado de permisos para todos los campos de un vistazo
  • Indicadores visuales que muestran si todos los usuarios o solo algunos usuarios tienen permisos específicos
  • Matriz de permisos integrada directamente en el formulario de configuración del campo para facilitar la configuración
  • Soporte para control de acceso de filtros de campo en JSON:API
  • Sistema de plugins extensible para tipos de permisos personalizados
  • Soporte de migración de Drupal 7 a Drupal 8/9/10/11
  • Funciona con cualquier tipo de entidad que soporte campos configurables

Use Cases

Campos privados de perfil de usuario

Crea campos privados en perfiles de usuario que solo el propio usuario (y administradores) pueden ver. Por ejemplo, almacena información sensible como números de teléfono o direcciones que los usuarios pueden ver y editar en su propio perfil pero no pueden ver en los perfiles de otros usuarios.

Campos de flujo de trabajo editorial

Añade campos a tipos de contenido que solo los editores y administradores pueden ver y editar. Por ejemplo, un campo 'Notas editoriales' que los autores de contenido no pueden ver, permitiendo a los editores dejar comentarios internos sobre el contenido.

Acceso a contenido premium

Crea campos que almacenan contenido premium visible solo para suscriptores de pago. Otorga permiso de 'ver' solo al rol 'suscriptor' mientras permite a todos los usuarios autenticados ver el resto del contenido.

Verificación de propiedad de contenido

Permite a los usuarios editar ciertos campos solo en su propio contenido. Por ejemplo, los usuarios pueden actualizar un campo 'Estado' en nodes que crearon pero no pueden modificar este campo en contenido creado por otros.

Información de contacto solo para personal

En un directorio de personal, haz que ciertos campos de contacto (como números de teléfono personales) sean privados para que solo el miembro del personal pueda ver su propia información, mientras que la información de contacto pública permanece visible para todos.

Moderación y control de calidad

Añade campos para puntuaciones internas de calidad o indicadores de moderación que los moderadores pueden editar en cualquier contenido pero los autores no pueden ver, permitiendo flujos de trabajo de moderación transparentes sin exponer procesos internos a los creadores de contenido.

Tips

  • Siempre prueba las configuraciones de permisos de campo con una cuenta que no sea administrador para verificar que funcionan como se espera
  • Usa el informe de Permisos de campo en Administración > Informes > Permisos de campo para obtener una visión rápida de todas las configuraciones de permisos de campo
  • Recuerda que las configuraciones de permisos se aplican a todas las instancias de un almacenamiento de campo, no a instancias individuales de campo - cambiar permisos en un bundle afecta a todos los bundles que usan ese campo
  • Al migrar desde Drupal 7, las configuraciones de permisos de campo se migrarán automáticamente si tienes el módulo Field Permissions habilitado durante la migración
  • Considera usar el modo 'Privado' para acceso simple solo del autor en lugar de configurar permisos personalizados complejos
  • El permiso 'access private fields' es un permiso poderoso - solo otórgalo a roles de alta confianza

Technical Details

Admin Pages 2
Permisos de campo /admin/reports/fields/permissions

Un informe completo que muestra todos los campos del sistema y su configuración actual de permisos. Para cada campo, muestra el nombre del campo, tipo de campo, tipo de entidad, bundles donde se usa y estado de permisos. Los campos con permisos personalizados muestran indicadores visuales para cada tipo de permiso (Crear, Editar propio, Editar de cualquiera, Ver propio, Ver de cualquiera) indicando si todos los usuarios tienen ese permiso o no.

Configuración del campo (sección Visibilidad y permisos del campo) /admin/structure/types/manage/{bundle}/fields/{field_config}/edit

Al editar la configuración de cualquier campo, se añade una sección 'Visibilidad y permisos del campo' en la parte inferior del formulario (visible solo para usuarios con permiso 'administrar permisos de campo'). Esto permite configurar el control de acceso por campo. Nota: Esta sección no aparece en campos de comentarios.

Permissions 7
Administrar permisos de campo

Gestionar permisos de campo y configuración de permisos de campo. Los usuarios con este permiso pueden configurar la visibilidad y los permisos para cualquier campo. Este es un permiso de acceso restringido.

Acceder a campos privados de otros usuarios

Ver y editar los valores almacenados de todos los campos privados, independientemente de la propiedad del contenido. Este es un permiso de acceso restringido típicamente solo otorgado a administradores.

Crear valor propio para el campo [field_name]

Permite crear un valor para este campo al crear nuevas entidades. Este es un permiso dinámico generado para cada campo que usa permisos personalizados.

Editar valor propio para el campo [field_name]

Permite editar el valor del campo en entidades propiedad del usuario actual. Para entidades de usuario, esto significa el perfil propio del usuario.

Editar valor de cualquiera para el campo [field_name]

Permite editar el valor del campo en cualquier entidad independientemente de la propiedad.

Ver valor propio para el campo [field_name]

Permite ver el valor del campo en entidades propiedad del usuario actual. Para entidades de usuario, esto significa el perfil propio del usuario.

Ver valor de cualquiera para el campo [field_name]

Permite ver el valor del campo en cualquier entidad independientemente de la propiedad.

Hooks 4
hook_entity_field_access

Implementa el control de acceso a campos delegando al plugin de tipo de permiso apropiado. Devuelve AccessResult::forbidden() si el usuario no tiene acceso al campo según el tipo de permiso configurado.

hook_field_permission_type_plugin_alter

Permite a los módulos alterar los plugins de tipo de permiso de campo descubiertos. Puede usarse para eliminar, modificar o reemplazar plugins de tipo de permiso.

hook_jsonapi_entity_field_filter_access

Controla el acceso a campos al filtrar vía JSON:API. Previene el acceso a campos con permisos restringidos en consultas de filtro de JSON:API.

hook_migration_plugins_alter

Añade el plugin de proceso d7_field_permission_settings para migrar configuraciones de permisos de campo desde Drupal 7.

Troubleshooting 5
La sección de permisos de campo no aparece en el formulario de edición de campo

Asegúrate de tener el permiso 'Administrar permisos de campo'. También nota que los permisos de campo no están disponibles para campos de comentarios.

Los permisos personalizados no aparecen en la página de permisos

Los permisos personalizados solo aparecen después de que un campo se configura para usar el tipo 'Permisos personalizados'. Establece primero el campo para usar permisos personalizados, luego los permisos aparecerán en Administración > Personas > Permisos.

El rol de administrador no puede tener permisos desmarcados

Esto es por diseño. Los roles de administrador automáticamente tienen todos los permisos, incluyendo permisos de campo. Las casillas de verificación están deshabilitadas para indicar esto.

Los permisos de campo no funcionan en nuevas entidades

Para permisos personalizados, asegúrate de que el rol tenga el permiso 'Crear valor propio para el campo'. Para campos privados, todos los usuarios pueden editar campos privados en entidades que están creando.

Las consultas de JSON:API devuelven prohibido para filtros de campo

Este es el comportamiento esperado. Los usuarios no pueden filtrar por campos a los que no tienen acceso de visualización. Otorga el permiso de visualización apropiado para permitir el filtrado.

Security Notes 5
  • El permiso 'administrar permisos de campo' solo debe otorgarse a administradores de confianza ya que permite configurar el acceso a todos los campos
  • El permiso 'access private fields' evita todas las restricciones de campos privados - úsalo con extrema precaución
  • Los permisos de campo añaden una capa de control de acceso pero no encriptan datos - los datos sensibles aún deben protegerse a nivel de base de datos si es necesario
  • Al usar permisos personalizados, audita regularmente qué roles tienen acceso a campos sensibles
  • Recuerda que los usuarios con acceso administrativo completo (uid 1 o roles marcados como admin) evitan todas las verificaciones de permisos de campo