Plugin local Moodle · Gestor de consentimiento

Advanced Cookie & Consent Manager

Guía completa de configuración, modelo de consentimiento, integración con Google, opt-out EE. UU., informes de conformidad y pruebas operativas.

1. Resumen

El plugin local_advancedcookiebanner gestiona el consentimiento de cookies/trackers, bloquea categorías opcionales antes del consentimiento, registra decisiones y soporta escenarios de privacidad (incluido opt-out EE. UU.).

Categorías de consentimiento granulares Hook API (Moodle) Proveedor Privacy API Audit log / retención

2. Instalación

  1. Coloque el plugin en /local/advancedcookiebanner.
  2. Ejecute la actualización desde /admin.
  3. Ejecute Purge all caches.
Importante: tras cambios AMD/CSS, siempre purgue las cachés de Moodle y haga un hard refresh del navegador.

3. Configuración

Ruta: Site administration -> Plugins -> Local plugins -> Advanced Cookie Banner

ÁreaOpcionesDescripción
Coreenabled, consentversion, consentexpirydays, logretentiondaysHabilitación, versionado y ciclo de vida de evidencias de consentimiento.
Regulacionesjurisdictionprofile, showdonotsellshare, respectdnt, respectgpcPerfil de jurisdicción y señales de privacidad del navegador.
UIbannerposition, showfloatingbutton, floatingbuttonposition, hidefloatingafteracceptPosición del banner/botón; hidefloatingafteraccept habilita la acción Close permanently en el encabezado del modal.
Secciones del modalshowcategoriessection, showpolicydetailssection, toggles de categoríasControl de visibilidad de secciones del modal.
Googleenablega4, enablegtm, gtmconsentmodeControl de carga de Google y señalización de consentimiento.

5. GA4 / GTM

  • GA4/GTM solo se inician tras el consentimiento analytics.
  • Con gtmconsentmode=1, las actualizaciones de consentimiento se envían a Google.
  • Sin consentimiento analytics = sin peticiones a Google Analytics/Tag Manager.

6. „No vender/compartir”

Al hacer clic se guarda us_optout y se aplica marketing=false.

Estado
us_optout
Marketing
deshabilitado
Estado UI
aria-pressed=true

7. Informe de conformidad

Informe: /local/advancedcookiebanner/report.php

  • lista de verificación de configuración,
  • tarjetas de estadísticas de evidencias de consentimiento,
  • matriz de preparación por framework.
  • Página de informe Cookie Scanner: /local/advancedcookiebanner/scannerreport.php.
  • Las tablas del escáner soportan búsqueda y filtrado por columnas; URLs largas se ajustan de forma responsiva.

8. Endpoints y datos

  • /local/advancedcookiebanner/consent.php - endpoint de escritura de decisiones.
  • /local/advancedcookiebanner/client_privacy.php - exportar/eliminar para clientid anónimo con token HMAC.
  • Tabla: local_acbanner_consent.
  • Tabla: local_acbanner_scan_run (metadatos de ejecución del escáner).
  • Tabla: local_acbanner_scan_finding (hallazgos detectados por el escáner).
  • /local/advancedcookiebanner/scanner.php - endpoint AJAX del escáner manual.

9. Cobertura normativa

GDPR (EU & UK)CCPA/CPRAVCDPA PIPEDALGPDCTDPACPA UCPAPDPLPOPIAnFADP DPAPrivacy ActPDPA

La cobertura indica soporte técnico a los controles. La conformidad legal final depende del despliegue real, configuración y validación legal de su organización.

10. Pruebas

  1. Incógnito: verificar primera capa y simetría Accept/Reject.
  2. Prueba de categorías: preferences/analytics/marketing/externalmedia.
  3. Prueba de retirada de consentimiento y limpieza de cookies.
  4. Prueba de opt-out EE. UU. y estado us_optout.
  5. Red: sin peticiones a Google antes del consentimiento analytics.
  6. Prueba de humo del escáner: ejecutar Run scan en la página de informe del escáner.
  7. Prueba de página objetivo: ejecutar Scan selected page y verificar retorno + hallazgos.

Prueba de reset de estado (QA)

Para probar desde cero sin cerrar el navegador, limpie el estado local de consentimiento:

localStorage.removeItem("local_advancedcookiebanner_consent");
localStorage.removeItem("local_advancedcookiebanner_clientid");
localStorage.removeItem("local_advancedcookiebanner_clienttoken");
document.cookie = "acb_consent_state=; Max-Age=0; path=/";
document.cookie = "acb_consent_version=; Max-Age=0; path=/";
document.cookie = "acb_clientid=; Max-Age=0; path=/";
document.cookie = "acb_consent_payload=; Max-Age=0; path=/";
location.reload();

Nota: en modo incógnito, las decisiones suelen recordarse en la misma sesión de ventana privada. Tras cerrar todas las ventanas privadas, el estado debería resetearse.

11. Solución de problemas

  • Assets antiguos: Purge all caches + hard refresh.
  • Sin acceso al informe: verificar capability local/advancedcookiebanner:managelogs.
  • El script se inicia sin consentimiento: verificar type="text/plain" y data-cookie-category.