Private Files Download Permission
Proporciona control de acceso granular por directorio para el sistema de archivos privados de Drupal, permitiendo a los administradores restringir las descargas de archivos por usuario y rol.
private_files_download_permission
Overview
Private Files Download Permission (PFDP) es un módulo integral de control de acceso para el sistema de archivos privados de Drupal. Aborda una limitación común en la funcionalidad del núcleo de Drupal al proporcionar un control detallado sobre quién puede descargar archivos de los directorios privados.
El módulo permite a los administradores del sitio definir directorios específicos del sistema de archivos privados y asignar permisos de descarga a usuarios individuales o roles. Cada configuración de directorio puede especificar qué usuarios y roles tienen permiso para acceder a los archivos dentro de ese directorio y sus subdirectorios. El módulo utiliza un algoritmo de mejor coincidencia para determinar qué configuración de directorio se aplica a una ruta de archivo determinada.
Las características adicionales incluyen la capacidad de otorgar automáticamente acceso a los propietarios de archivos a sus archivos subidos, modo de omisión para directorios que deben ser manejados por otros módulos, y permisos de omisión global para administradores. El módulo también proporciona opciones de optimización de rendimiento como el almacenamiento en caché de la lista de usuarios y modo de anulación para servir archivos directamente.
Features
- Control de acceso por directorio para descargas de archivos privados con coincidencia basada en rutas
- Asignación de permisos basada en usuarios que permite a usuarios específicos descargar de directorios definidos
- Asignación de permisos basada en roles para un control de acceso más amplio
- Concesión de acceso a propietarios de archivos para permitir que los usuarios descarguen sus propios archivos subidos
- Modo de omisión para directorios que deben ser manejados por otros módulos o el núcleo
- Permisos de omisión global para administradores y archivos temporales
- Modo de adjunto para forzar la descarga de archivos en lugar de la visualización en línea del navegador
- Modo de anulación para omitir la cadena de validación de Drupal para servir archivos más rápido
- Modo de depuración con registro detallado de las decisiones de acceso
- Almacenamiento en caché de la lista de usuarios para mejorar el rendimiento en sitios con muchos usuarios
- Validación automática de las rutas de directorio asegurando el formato correcto con barra inicial
- Interfaz administrativa que muestra la ruta actual del sistema de archivos privados y el estado de la configuración
Use Cases
Restringir descargas de documentos a roles específicos
Una intranet corporativa necesita restringir los documentos de RRHH solo al personal de RRHH. Configure una entrada de directorio para '/hr-documents' y habilite solo el rol 'Personal de RRHH'. Todos los demás usuarios no tendrán acceso a los archivos en el directorio private://hr-documents.
Permitir a los usuarios acceder a sus propias subidas
Un sitio de intercambio de archivos donde los usuarios suben documentos privados a los que solo ellos deberían acceder. Cree una entrada de directorio para '/' (todo el sistema de archivos privados), habilite 'Otorgar a propietarios de archivos' y no seleccione ningún usuario o rol. Esto asegura que solo el usuario que subió el archivo pueda descargarlo.
Acceso a archivos basado en departamentos
Una organización con múltiples departamentos, cada uno con su propio almacenamiento de archivos privados. Cree entradas de directorio separadas para '/finanzas', '/marketing', '/ingenieria', etc., y asigne el rol de departamento apropiado a cada entrada.
Acceso a contenido VIP
Contenido premium que debe ser accesible para miembros de pago específicos. Cree un directorio para '/contenido-premium' y seleccione cuentas de usuario individuales en la sección 'Usuarios habilitados' (requiere 'Habilitar verificaciones por usuario' en la configuración).
Manejo mixto público y privado
Algunos directorios necesitan ser manejados por otros módulos (como Media o Webform). Establezca la opción 'Bypass' en esas entradas de directorio para que este módulo las ignore y permita que otros módulos controlen el acceso.
Optimización para sitios de alto tráfico
Un sitio con muchos usuarios que experimenta descargas de archivos lentas. Habilite 'Modo de anulación' en la configuración para omitir la cadena de validación de Drupal y servir archivos directamente. También habilite 'Almacenar en caché lista de usuarios' si usa verificaciones por usuario para mejorar el rendimiento de la interfaz de administración.
Tips
- Las rutas de directorio usan lógica de mejor coincidencia: una entrada '/documents/confidential' tiene precedencia sobre '/documents' para archivos en el subdirectorio confidential
- La ruta raíz '/' se puede usar para controlar todo el sistema de archivos privados
- Use la opción 'Bypass' para directorios que deben ser manejados por otros módulos como Media o Webform
- Considere deshabilitar 'verificaciones por usuario' en sitios con muchos usuarios si solo necesita permisos basados en roles
- El registro de depuración incluye ID de usuario, nombre de usuario y nombre para mostrar para fácil identificación
- Cuando el modo de anulación está habilitado, se omitirán otros módulos que implementen hook_file_download
Technical Details
Admin Pages 5
/admin/config/media/private-files-download-permission
Página principal de administración que muestra una lista de todos los directorios de archivos privados configurados con sus permisos de acceso. Muestra las rutas de los directorios, el estado de omisión, los usuarios habilitados y los roles habilitados en formato de tabla. Proporciona enlaces para editar y eliminar cada entrada de directorio. También muestra mensajes informativos sobre la ruta actual del sistema de archivos privados y si las verificaciones por usuario están habilitadas.
/admin/config/media/private-files-download-permission/add
Formulario para agregar una nueva entrada de directorio de archivos privados a la lista de control de permisos. Permite especificar la ruta del directorio, la opción de omisión, las concesiones a propietarios de archivos, y asignar usuarios y roles específicos que pueden descargar archivos de este directorio.
/admin/config/media/private-files-download-permission/{pfdp_directory}
Formulario para editar una entrada de directorio de archivos privados existente. Los mismos campos que el formulario de agregar, pero con valores precargados de la configuración existente.
/admin/config/media/private-files-download-permission/{pfdp_directory}/delete
Formulario de confirmación para eliminar una entrada de directorio de la lista de control de permisos. Eliminar una entrada no borra ningún archivo real, solo la configuración de permisos.
/admin/config/media/private-files-download-permission/settings
Formulario de configuración global del módulo, que permite a los administradores configurar opciones de rendimiento y comportamiento de descarga.
Permissions 3
Hooks 1
hook_file_download
Controla el acceso a las descargas de archivos privados. Esta es la implementación principal del hook que verifica si el usuario actual tiene permiso para descargar un archivo privado solicitado basándose en los permisos de directorio configurados.
Troubleshooting 6
Habilite 'Modo de depuración' en la configuración del módulo y verifique los registros de Drupal (Informes > Mensajes de registro recientes) para obtener información detallada sobre las decisiones de acceso, incluyendo detalles de usuario y URI.
Configure la ruta del sistema de archivos privados en su archivo settings.php usando: $settings['file_private_path'] = '/ruta/a/archivos/privados';
Vaya a Configuración > Medios > Sistema de archivos y establezca el método de descarga predeterminado a 'Archivos locales privados servidos por Drupal'.
Habilite 'Habilitar verificaciones por usuario' en la configuración del módulo (/admin/config/media/private-files-download-permission/settings).
Habilite 'Almacenar en caché lista de usuarios' en la configuración del módulo para almacenar en caché la lista de usuarios utilizada en el formulario de edición de directorio.
Deshabilite 'Modo de anulación' en la configuración para restaurar la cadena normal de validación de descarga de archivos de Drupal.
Security Notes 5
- Este módulo solo afecta las descargas de archivos privados - los archivos públicos no están controlados
- El permiso 'bypass pfdp' solo debe otorgarse a roles altamente confiables ya que permite acceso a todos los archivos privados
- El modo de anulación omite las verificaciones de acceso de otros módulos, lo que puede tener implicaciones de seguridad
- Las rutas de directorio no distinguen entre mayúsculas y minúsculas al hacer coincidencias
- Los archivos sin una configuración de directorio coincidente serán denegados por defecto