Plugin local Moodle · Gerenciador de consentimento

Advanced Cookie & Consent Manager

Guia completo de configuração, modelo de consentimento, integração Google, opt-out EUA, relatórios de conformidade e testes operacionais.

1. Visão geral

O plugin local_advancedcookiebanner gerencia o consentimento de cookies/trackers, bloqueia categorias opcionais antes do consentimento, registra decisões e suporta cenários de privacidade (incluindo opt-out EUA).

Categorias de consentimento granulares Hook API (Moodle) Provedor Privacy API Audit log / retenção

2. Instalação

  1. Coloque o plugin em /local/advancedcookiebanner.
  2. Execute a atualização a partir de /admin.
  3. Execute Purge all caches.
Importante: após alterações AMD/CSS, sempre limpe o cache do Moodle e faça um hard refresh do navegador.

3. Configurações

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

ÁreaOpçõesDescrição
Coreenabled, consentversion, consentexpirydays, logretentiondaysAtivação, versionamento e ciclo de vida das evidências de consentimento.
Regulamentosjurisdictionprofile, showdonotsellshare, respectdnt, respectgpcPerfil de jurisdição e sinais de privacidade do navegador.
UIbannerposition, showfloatingbutton, floatingbuttonposition, hidefloatingafteracceptPosicionamento do banner/botão; hidefloatingafteraccept ativa a ação Close permanently no cabeçalho do modal.
Seções do modalshowcategoriessection, showpolicydetailssection, toggles de categoriasControle da visibilidade das seções do modal.
Googleenablega4, enablegtm, gtmconsentmodeControle de carregamento do Google e sinalização de consentimento.

5. GA4 / GTM

  • GA4/GTM só iniciam após consentimento analytics.
  • Com gtmconsentmode=1, as atualizações de consentimento são enviadas ao Google.
  • Sem consentimento analytics = sem requisições ao Google Analytics/Tag Manager.

6. „Não vender/compartilhar”

O clique salva us_optout e aplica marketing=false.

Status
us_optout
Marketing
desativado
Estado da UI
aria-pressed=true

7. Relatório de conformidade

Relatório: /local/advancedcookiebanner/report.php

  • lista de verificação de configuração,
  • cartões de estatísticas de evidências de consentimento,
  • matriz de prontidão por framework.
  • Página de relatório Cookie Scanner: /local/advancedcookiebanner/scannerreport.php.
  • As tabelas do scanner suportam busca e filtragem por coluna; URLs longos se ajustam de forma responsiva.

8. Endpoints e dados

  • /local/advancedcookiebanner/consent.php - endpoint de gravação de decisões.
  • /local/advancedcookiebanner/client_privacy.php - exportar/excluir para clientid anônimo com token HMAC.
  • Tabela: local_acbanner_consent.
  • Tabela: local_acbanner_scan_run (metadados de execução do scanner).
  • Tabela: local_acbanner_scan_finding (achados detectados pelo scanner).
  • /local/advancedcookiebanner/scanner.php - endpoint AJAX do scanner manual.

9. Cobertura regulatória

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

A cobertura indica suporte técnico aos controles. A conformidade legal final depende do deploy real, configuração e validação legal da sua organização.

10. Testes

  1. Anônimo: verificar primeira camada e simetria Accept/Reject.
  2. Teste de categorias: preferences/analytics/marketing/externalmedia.
  3. Teste de retirada de consentimento e limpeza de cookies.
  4. Teste de opt-out EUA e status us_optout.
  5. Rede: sem requisições ao Google antes do consentimento analytics.
  6. Teste de fumaça do scanner: executar Run scan na página de relatório do scanner.
  7. Teste de página alvo: executar Scan selected page e verificar retorno + achados.

Teste de reset de estado (QA)

Para testar do zero sem fechar o navegador, limpe o estado local de consentimento:

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: no modo anônimo, as decisões geralmente são lembradas na mesma sessão de janela privada. Após fechar todas as janelas privadas, o estado deve ser redefinido.

11. Solução de problemas

  • Assets antigos: Purge all caches + hard refresh.
  • Sem acesso ao relatório: verificar capability local/advancedcookiebanner:managelogs.
  • O script inicia sem consentimento: verificar type="text/plain" e data-cookie-category.