Permisos personalizados
Un módulo ligero que permite a los administradores del sitio crear permisos personalizados y asignarlos a rutas específicas de Drupal, habilitando un control de acceso granular sin necesidad del amplio permiso 'Administrar configuración del sitio'.
config_perms
Install
composer require 'drupal/config_perms:8.x-2.3'
Overview
Custom Permissions es un módulo ligero de Drupal que proporciona una forma simple pero potente de crear y gestionar permisos personalizados a través de una interfaz de administración. El módulo permite a los administradores definir permisos que pueden asignarse a rutas específicas (rutas administrativas), habilitando un control de acceso detallado para tareas de configuración del sitio.
El módulo funciona creando entidades de configuración que almacenan los nombres de los permisos y sus rutas asociadas. Cuando está habilitado, genera dinámicamente estos permisos en el sistema de permisos de Drupal y reemplaza las verificaciones de acceso predeterminadas en las rutas especificadas con su propio verificador de acceso. Esto significa que los usuarios con el permiso personalizado pueden acceder a las rutas especificadas sin necesitar el permiso más amplio 'Administrar configuración del sitio'.
El módulo viene con cuatro permisos preconfigurados de fábrica: Administrar configuración de cuentas, Administrar fecha y hora, Administrar registros de errores y Administrar sistema de archivos. Los administradores pueden agregar fácilmente nuevos permisos o modificar los existentes a través de la interfaz de administración.
Features
- Crear permisos personalizados asignados a rutas específicas de Drupal a través de una interfaz de administración intuitiva
- Genera dinámicamente permisos que aparecen en la página estándar de permisos de Drupal
- Reemplaza las verificaciones de acceso de rutas para usar control de acceso basado en permisos personalizados
- Viene con cuatro permisos preconfigurados para tareas administrativas comunes
- Soporta múltiples rutas por permiso usando nombres de rutas separados por saltos de línea
- Almacena permisos como entidades de configuración, haciéndolos exportables y desplegables
- Valida los nombres de las rutas para asegurar que existan antes de guardar los permisos
- El usuario 1 mantiene control administrativo completo independientemente de la configuración de permisos
Use Cases
Delegar tareas administrativas a editores de contenido
Un caso de uso común es permitir que los editores de contenido accedan a páginas de configuración específicas sin otorgar acceso administrativo completo. Por ejemplo, puede crear un permiso personalizado que permita a los editores gestionar formatos de fecha (entity.date_format.collection) para que puedan configurar cómo aparecen las fechas en el sitio, sin tener acceso a otras configuraciones del sistema.
Crear acceso basado en roles para informes
Los administradores del sitio pueden crear un permiso personalizado para acceder a la página de registro de base de datos (dblog.overview) y asignarlo a un rol 'Monitor del sitio'. Esto permite que usuarios designados vean los registros de errores y la actividad del sitio sin tener privilegios administrativos más amplios.
Separar la administración del sistema de archivos
Para sitios donde usuarios específicos necesitan configurar ajustes de carga de archivos, cree un permiso asignado a system.file_system_settings. Esto permite que los administradores de archivos gestionen directorios de carga y manejo de archivos sin acceso a otra configuración del sistema.
Paquetes de permisos con múltiples rutas
Cree un único permiso que otorgue acceso a múltiples rutas relacionadas. Por ejemplo, un permiso 'Gestionar configuración de usuarios' podría incluir tanto entity.user.admin_form (configuración de cuentas) como user.role_admin (gestión de roles), creando un permiso integral de administración de usuarios.
Tips
- Los nombres de rutas se pueden encontrar en archivos *.routing.yml dentro del core de Drupal y módulos contribuidos, o usando herramientas de depuración como el módulo Devel
- Recuerde que los permisos personalizados reemplazan completamente los requisitos de acceso predeterminados para las rutas especificadas - los usuarios con permisos originales del core ya no tendrán acceso a menos que también tengan el permiso personalizado
- Siempre pruebe los permisos personalizados con una cuenta que no sea administrador para verificar que el acceso esté correctamente restringido
- Al migrar desde versiones anteriores, tenga en cuenta que las rutas de URL han sido reemplazadas por nombres de rutas - use el validador de rutas de Drupal para convertir rutas de URL a nombres de rutas
- Se pueden asignar múltiples rutas a un solo permiso ingresando cada nombre de ruta en una línea separada en el campo Ruta(s)
Technical Details
Admin Pages 2
/admin/people/custom-permissions/list
La página principal de administración para gestionar permisos personalizados. Esta página muestra una tabla de todos los permisos personalizados definidos y permite a los administradores crear, editar, habilitar/deshabilitar y eliminar permisos. Cada permiso puede asignarse a una o más rutas de Drupal.
/admin/structure/custom_perms_entity/{custom_perms_entity}/delete
Página de confirmación para eliminar un permiso personalizado. Muestra el nombre del permiso y solicita confirmación antes de la eliminación permanente.
Permissions 1
Hooks 1
config_perms_parse_path
Función utilitaria para convertir entre representaciones de cadena y array de rutas. Cuando se le da un array de rutas, las une con saltos de línea. Cuando se le da una cadena, la divide por saltos de línea en un array.
Security Notes 4
- Los permisos personalizados pueden tener implicaciones de seguridad ya que otorgan acceso a páginas administrativas - revise cuidadosamente qué rutas se están exponiendo
- El módulo muestra una advertencia en la página de permisos indicando que los permisos personalizados pueden tener implicaciones de seguridad
- Eliminar el permiso 'Administrar configuración del sitio' de un usuario mientras se confía en permisos personalizados asegura que solo puedan acceder a áreas administrativas específicamente designadas
- El usuario 1 siempre mantiene acceso completo independientemente de la configuración de permisos, proporcionando una salvaguarda para la recuperación del sitio