feat(rgpd): pedido de acesso/apagamento de dados + processo escrito (item 9.5)
- migration_20260925_rgpd_requests.sql: tabela rgpd_requests (email, tipo, estado, consentimento). - config/functions_rgpd.php: rgpd_find() (acesso, art.º 15) e rgpd_erase() (apagamento por anonimização, art.º 17) sobre membership_leads/trial_leads/ event_leads, + CRUD dos pedidos. - Política de Privacidade: formulário público (POST + CSRF + anti-spam) para pedir acesso ou apagamento, e o processo escrito (resposta em 30 dias). - Backoffice: página "Pedidos RGPD" (nav + index) para exportar os dados de um email (CSV, audit) ou anonimizá-los (POST + CSRF, audit). O email está desligado, por isso os pedidos ficam guardados (como as leads), não dependem de SMTP. Texto legal com placeholders — rever com jurista antes do go-live (como já constava na Política). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
116817e2de
commit
3f2c505c17
6 files changed
+248
-1
No files matched your search
@@ -43,6 +43,7 @@ require_once __DIR__ . '/functions_reviews.php'; // reviews Google (Places
|
||||
require_once __DIR__ . '/functions_trials.php'; // pedidos de aula experimental
|
||||
require_once __DIR__ . '/functions_privacy.php'; // mapa e fotos da Google só a pedido / servidos localmente
|
||||
require_once __DIR__ . '/functions_forms.php'; // anti-spam + bloqueio de IP dos formulários públicos
|
||||
require_once __DIR__ . '/functions_rgpd.php'; // pedidos de acesso/apagamento (art.º 15/17)
|
||||
|
||||
// ─── DB-backed settings → legacy constants ───────────────────────────────────
|
||||
// Resolved once from the settings cache so call sites read plain constants.
|
||||
|
||||
Reference in new issue
Block a user