Przejdź do głównej zawartości

Zarządzanie zgodami

Moduł zarządzania zgodami dodaje wersjonowanie zgód, audit trail, eksport danych i integrację z RODO. Śledzi historię zgód klientów i reaguje na zmiany treści regulaminów.

Plugin śledzi treść checkboxów. Przy każdym zapisie ustawień porównuje hash (SHA-256) treści. Gdy treść się zmieni - tworzy nową wersję zgody automatycznie.

Każda wersja zgody zawiera:

  • numer wersji (autoinkrementacja)
  • hash treści etykiety
  • pełną treść etykiety
  • datę utworzenia wersji
  • ID użytkownika, który dokonał zmiany

Kliknij Historia wersji przy checkboxie, aby zobaczyć wszystkie wersje z datami i treścią.

Gdy treść zgody się zmieni, plugin może wymagać ponownej zgody. Ustawienia:

Ustawienie Opis
Wymagaj ponownej zgody Włącza monit o ponowne wyrażenie zgody po zmianie treści
Wyświetlaj monit Na stronie kasy / W panelu Moje konto / Oba
Treść komunikatu Tekst informujący klienta o zmianie regulaminu

Klient widzi komunikat o zmianie i musi ponownie zaznaczyć checkbox. Wcześniejsza zgoda zostaje w historii.

Plugin zapisuje wszystkie operacje na zgodach:

Zdarzenie Dane
Zgoda wyrażona ID użytkownika, ID zgody, wersja, data, IP, user agent
Zgoda wycofana ID użytkownika, ID zgody, data, źródło (klient/admin)
Zmiana treści zgody ID zgody, stara wersja, nowa wersja, data, ID admina
Monit o ponowną zgodę ID użytkownika, ID zgody, data
Ponowna zgoda ID użytkownika, ID zgody, nowa wersja, data

W panelu WordPressa nie ma ekranu audit trail. Wtyczka PRO udostępnia log wyłącznie przez REST, a każda trasa wymaga uprawnienia manage_woocommerce:

GET /wp-json/polski-pro/v1/consents?user_id=123
GET /wp-json/polski-pro/v1/consents?session_id=abc
GET /wp-json/polski-pro/v1/consents/versions

Parametr user_id albo session_id jest wymagany. Nie ma listy bez filtra, filtra po typie zdarzenia ani po zakresie dat.

Darmowa wtyczka ma natomiast ekran decyzji z banera cookie: Polski > Raporty i narzędzia > Rejestr zgód.

Eksport działa przez REST i domyślnie zwraca JSON:

GET /wp-json/polski-pro/v1/consents/export?user_id=123

Jedno wywołanie to jeden użytkownik. Dodaj &format=csv, żeby pobrać CSV, od PRO 1.26.3.

W Moje konto klient widzi sekcję “Moje zgody”. Może:

  • przeglądać aktualnie wyrażone zgody
  • zobaczyć datę wyrażenia każdej zgody
  • wycofać zgodę przyciskiem “Wycofaj”

Wycofanie jest zapisywane w audit trail. Administrator dostaje powiadomienie e-mail (konfigurowalne).

Gdy treść zgody się zmieni, klient widzi w Moje konto prośbę o zapoznanie się z nową wersją i ponowną zgodę.

Plugin integruje się z eksportem danych WordPress (wp_privacy_personal_data_exporters). Przy eksporcie danych klienta dołącza:

  • listę wyrażonych zgód z datami i wersjami
  • pełną historię zmian zgód (wyrażenia, wycofania, ponowne zgody)
  • adresy IP i daty powiązane z każdą zgodą
/**
* Rejestracja eksportera danych osobowych.
*/
add_filter('wp_privacy_personal_data_exporters', function (array $exporters): array {
$exporters['polski-pro-consents'] = [
'exporter_friendly_name' => 'Polski PRO - Zgody',
'callback' => [PolskiPro\Privacy\Exporter::class, 'export'],
];
return $exporters;
});

Plugin integruje się z usuwaniem danych WordPress (wp_privacy_personal_data_erasers). Przy usuwaniu danych:

  • dane osobowe w audit trail są anonimizowane (IP, user agent)
  • wpisy zgód są oznaczane jako usunięte
  • sam fakt wyrażenia/wycofania zgody pozostaje (bez danych identyfikujących) dla celów rozliczalności
/**
* Rejestracja erasera danych osobowych.
*/
add_filter('wp_privacy_personal_data_erasers', function (array $erasers): array {
$erasers['polski-pro-consents'] = [
'eraser_friendly_name' => 'Polski PRO - Zgody',
'callback' => [PolskiPro\Privacy\Eraser::class, 'erase'],
];
return $erasers;
});

Trzy trasy tylko do odczytu, każda wymaga uprawnienia manage_woocommerce.

GET /wp-json/polski-pro/v1/consents?user_id={id}
GET /wp-json/polski-pro/v1/consents?session_id={id}

Jeden z dwóch parametrów jest wymagany; bez żadnego trasa odpowiada 400 i komunikatem “Provide user_id or session_id.”. Zapytanie po użytkowniku zwraca 200 najnowszych rekordów, zapytanie po sesji zwraca rekordy tej sesji. Nie ma filtra po typie zdarzenia ani po dacie, nie ma stronicowania.

GET /wp-json/polski-pro/v1/consents/export?user_id={id}
GET /wp-json/polski-pro/v1/consents/export?user_id={id}&format=csv

user_id jest wymagany. Zwraca do 1000 rekordów. Domyślnie JSON, opakowany w user_id, exported_at i records_count. Podaj format=csv, żeby dostać plik text/csv z kolumnami checkbox_id, context, consented, ip_address, created_at, gdzie consented przyjmuje yes albo no. Każda inna wartość cofa się do JSON-a.

Przed PRO 1.26.3 parametr format był zadeklarowany i ignorowany, więc żądanie CSV dostawało JSON bez żadnego błędu.

GET /wp-json/polski-pro/v1/consents/versions

Zwraca zapisaną mapę wersji. Nie przyjmuje argumentów.

Trasa /consents/audit nie istnieje, a żadna trasa nie przyjmuje consent_id, event_type, date_from, date_to ani per_page.

Moduł zgód nie rejestruje własnych akcji ani filtrów. Log odczytuj przez powyższe trasy albo bezpośrednio przez ConsentLog. Na potrzeby żądań RODO moduł rejestruje eksporter i procedurę usuwania danych osobowych WordPressa i to jest wspierana droga do tych danych z zewnątrz wtyczki.

  1. Sprawdź, czy opcja “Wymagaj ponownej zgody” jest włączona
  2. Zweryfikuj, czy treść zgody faktycznie się zmieniła (sprawdź historię wersji)
  3. Wyczyść cache strony kasy i panelu Moje konto
  1. Upewnij się, że moduł zarządzania zgodami jest aktywny
  2. Sprawdź, czy eksporter polski-pro-consents jest zarejestrowany w Narzędzia > Eksport danych osobowych
  3. Zweryfikuj logi pod kątem błędów PHP

Historia zgód jest w osobnej tabeli. Przy wielu klientach może rosnąć. Rozważ:

  • regularne eksportowanie i archiwizowanie starszych wpisów
  • ustawienie automatycznego czyszczenia wpisów starszych niż określona liczba miesięcy (opcja w ustawieniach)
Ta strona ma wyłącznie charakter informacyjny i nie stanowi porady prawnej. Przed wdrożeniem skonsultuj się z prawnikiem. Polski for WooCommerce jest oprogramowaniem open source (GPLv2) dostarczanym bez gwarancji.