Files
polskalokalnie/scripts/fix-marketing-consents.sql
debian ca5f3ebfc1
Deploy Polska Lokalnie / deploy (push) Successful in 22s
Regulamin i polityka prywatnosci zgodne ze stanem serwisu
Audyt pokazal rozbieznosci w obie strony: dokumenty opisywaly funkcje,
ktorych nie ma (logowanie Google/Facebook), a kod robil rzeczy, ktorych
dokumenty nie ujawnialy.

Kod:
- zgody marketingowe domyslnie WYLACZONE (byly true dla kazdego nowego
  konta) + skrypt fix-marketing-consents.sql czyszczacy stare wpisy,
- usuniete tlumaczenie przez nieoficjalne API Google - przy zmianie
  jezyka wysylalo do USA tresci stron, w tym wiadomosci i nazwiska,
- osadzone spacery (YouTube, Matterport, Kuula) laduja sie dopiero po
  zgodzie; YouTube w trybie bez ciasteczek; mapy jak dotad,
- usuniecie konta kasuje dane osobowe (AccountErasureService), a nie
  tylko wiersz app_users,
- wygasle tokeny i kody SMS kasowane po 7 dniach (ExpiredTokenCleaner),
- zapisujemy moment akceptacji regulaminu przy rejestracji.

Dokumenty: opisuja realne funkcje, wszystkich odbiorcow danych (OVH,
Autopay, SMTP, SMS, Esri, OpenStreetMap, YouTube/Matterport/Kuula, GUS),
transfery poza EOG, konkretne okresy przechowywania, procedure zgloszen
z DSA, brak profilowania i tabele pamieci przegladarki zamiast fikcyjnych
cookies analitycznych. Zakres NIS2 i DORA opisany zgodnie z prawda.

Uklad stron prawnych jak reszta serwisu: kontener 1760 px, karty,
spis tresci z boku.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-23 21:59:15 +02:00

48 lines
2.1 KiB
PL/PgSQL

-- Wycofanie domniemanych zgod marketingowych.
--
-- Do 2026-09-23 encja Lead miala emailConsent i smsConsent ustawione domyslnie na TRUE, a lead
-- powstawal automatycznie przy kazdej rejestracji. Oznacza to, ze w bazie sa zgody, ktorych nikt
-- swiadomie nie wyrazil - a zgoda marketingowa musi byc uprzednia i wyrazna (art. 4 pkt 11
-- i art. 7 RODO oraz Prawo komunikacji elektronicznej). Kod juz tego nie robi (domyslnie FALSE),
-- ten skrypt porzadkuje dane, ktore powstaly wczesniej.
--
-- Skrypt zeruje zgody WSZYSTKIM leadom, bo w bazie nie ma sladu, kto zgode wyrazil swiadomie,
-- a kto dostal ja z automatu. Kierunek jest bezpieczny: uzytkownik moze ja wlaczyc sam
-- w ustawieniach konta. Trwalych rezygnacji (opt-out) skrypt nie rusza.
--
-- Domyslnie PROBA NA SUCHO: wszystko w jednej transakcji, skrypt pokazuje stan przed i po,
-- po czym robi ROLLBACK. Zapis nastepuje tylko z -v apply=1.
--
-- docker exec -i polskalokalnie-db-1 psql -U polskalokalnie -d polskalokalnie < scripts/fix-marketing-consents.sql
-- docker exec -i polskalokalnie-db-1 psql -U polskalokalnie -d polskalokalnie -v apply=1 < scripts/fix-marketing-consents.sql
\set ON_ERROR_STOP on
\if :{?apply}
\else
\set apply 0
\endif
BEGIN;
\echo '=== Stan przed ==='
SELECT 'leady razem' AS co, count(*) AS ile FROM leads
UNION ALL SELECT 'ze zgoda na e-mail', count(*) FROM leads WHERE email_consent
UNION ALL SELECT 'ze zgoda na SMS', count(*) FROM leads WHERE sms_consent
UNION ALL SELECT 'z trwala rezygnacja (nie ruszamy)', count(*) FROM leads WHERE email_opt_out OR sms_opt_out;
UPDATE leads SET email_consent = false WHERE email_consent;
UPDATE leads SET sms_consent = false WHERE sms_consent;
\echo '=== Stan po ==='
SELECT 'leady razem' AS co, count(*) AS ile FROM leads
UNION ALL SELECT 'ze zgoda na e-mail', count(*) FROM leads WHERE email_consent
UNION ALL SELECT 'ze zgoda na SMS', count(*) FROM leads WHERE sms_consent;
\if :apply
COMMIT;
\echo '>>> ZAPISANO (COMMIT) - zgody wyzerowane, uzytkownik moze je wlaczyc w ustawieniach konta'
\else
ROLLBACK;
\echo '>>> PROBA NA SUCHO - nic nie zostalo zmienione (ROLLBACK). Zapis: -v apply=1'
\endif