Reorganize problems
This commit is contained in:
parent
cc881fddbe
commit
2b6346bca0
|
@ -1,240 +1,8 @@
|
||||||
import { RequestCluster } from '../request-cluster';
|
import { RequestCluster } from '../request-cluster';
|
||||||
import { ExplainerKey } from './explainers';
|
|
||||||
import { ParsedAnswers } from './parse-answers';
|
import { ParsedAnswers } from './parse-answers';
|
||||||
import { v } from './verbs';
|
import NoInformationAtAllProblem from './problems/no-information-at-all';
|
||||||
|
import { Problem } from './problems/problem';
|
||||||
abstract class Problem {
|
import { UnlawfulCookieAccess } from './problems/unlawful-cookies';
|
||||||
constructor(public answers: ParsedAnswers, public clusters: Record<string, RequestCluster>) {}
|
|
||||||
|
|
||||||
getMarkedClusters() {
|
|
||||||
return Object.values(this.clusters).filter((c) => c.hasMarks());
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract getEmailContent(): JSX.Element;
|
|
||||||
abstract getNecessaryExplainers(): ExplainerKey[];
|
|
||||||
}
|
|
||||||
|
|
||||||
function formatRange(cluster: RequestCluster) {
|
|
||||||
const parts = [] as string[];
|
|
||||||
console.log(cluster);
|
|
||||||
if (cluster.hasMarkedCookies()) {
|
|
||||||
parts.push('mojego identyfikatora internetowego pozyskanego z Cookie');
|
|
||||||
}
|
|
||||||
if (cluster.exposesOrigin()) {
|
|
||||||
parts.push('części mojej historii przeglądania');
|
|
||||||
}
|
|
||||||
return parts.join(' oraz ');
|
|
||||||
}
|
|
||||||
|
|
||||||
class NoInformationAtAllProblem extends Problem {
|
|
||||||
getEmailContent() {
|
|
||||||
const _ = (word: string) => v(word, this.answers.zaimek);
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<h2>Brak informacji na temat przetwarzania danych osobowych</h2>
|
|
||||||
<p>
|
|
||||||
{_('Moje')} dane osobowe zostały ujawnione podmiotom, które są właścicielami domen:
|
|
||||||
</p>
|
|
||||||
<ul>
|
|
||||||
{this.getMarkedClusters().map((cluster) => (
|
|
||||||
<li key={cluster.id}>
|
|
||||||
{cluster.id} (w zakresie: {formatRange(cluster)})
|
|
||||||
</li>
|
|
||||||
))}
|
|
||||||
</ul>
|
|
||||||
<p>
|
|
||||||
Na stronie brakuje jednak jakichkolwiek informacji o tym, jakie są cele przetwarzania
|
|
||||||
takich danych oraz jakie są podstawy prawne takiego przetwarzania.
|
|
||||||
</p>
|
|
||||||
<p>Zwracam się zatem do Państwa z następującymi pytaniami:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Jaka jest tożsamość właścicieli tych domen?</li>
|
|
||||||
<li>Jaki jest cel takiego przetwarzania danych przez Państwa stronę?</li>
|
|
||||||
<li>
|
|
||||||
Jaka jest podstawa prawna takiego przetwarzania moich danych osobowych przez
|
|
||||||
Państwa stronę?
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
getNecessaryExplainers() {
|
|
||||||
const explainers = [] as Array<ExplainerKey>;
|
|
||||||
|
|
||||||
if (
|
|
||||||
this.getMarkedClusters().some((cluster) => {
|
|
||||||
console.log(cluster);
|
|
||||||
return cluster.hasMarkedCookies();
|
|
||||||
})
|
|
||||||
) {
|
|
||||||
explainers.push('cookies_are_pii');
|
|
||||||
}
|
|
||||||
return explainers;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class UnlawfulCookieAccess extends Problem {
|
|
||||||
getNecessaryExplainers(): ExplainerKey[] {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
getEmailContent() {
|
|
||||||
const cookie_clusters = Object.values(this.clusters).filter((c) => c.hasMarkedCookies());
|
|
||||||
const unnecessary_hosts = Object.entries(this.answers.hosts)
|
|
||||||
.filter(([, answers]) => answers.was_processing_necessary === 'no')
|
|
||||||
.map(([host]) => host);
|
|
||||||
const maybe_unnecessary_hosts = Object.entries(this.answers.hosts)
|
|
||||||
.filter(([, answers]) => answers.was_processing_necessary === 'not_sure')
|
|
||||||
.map(([host]) => host);
|
|
||||||
const _ = (key: string) => v(key, this.answers.zaimek);
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<h2>Dostęp do cookies niezgodny z ustawą Prawo Telekomunikacyjne</h2>
|
|
||||||
<p>
|
|
||||||
Państwa strona dokonała odczytu plików Cookie zapisanych na dysku twardym mojego
|
|
||||||
komputera. Dotyczy to plików cookie przypisanych do domen:
|
|
||||||
</p>
|
|
||||||
<ul>
|
|
||||||
{cookie_clusters.map((cluster, index) => {
|
|
||||||
const names = cluster
|
|
||||||
.getMarkedEntries()
|
|
||||||
.filter((e) => e.source === 'cookie')
|
|
||||||
.map((e) => e.name);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<li>
|
|
||||||
{cluster.id} ({names.length > 1 ? 'pliki' : 'plik'}{' '}
|
|
||||||
{names.map((name, index) => {
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
{index > 0 ? ', ' : ''}
|
|
||||||
{name}
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
){index === cookie_clusters.length - 1 ? '.' : ';'}
|
|
||||||
</li>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
</ul>
|
|
||||||
<p>
|
|
||||||
Zgodnie z treścią Art. 173.{' '}
|
|
||||||
<a href="https://isap.sejm.gov.pl/isap.nsf/download.xsp/WDU20041711800/U/D20041800Lj.pdf">
|
|
||||||
ustawy Prawo Telekomunikacyjne
|
|
||||||
</a>
|
|
||||||
, strona może pozyskać dostęp do treści plików cookies pod warunkiem spełnienia
|
|
||||||
jednego z następujących warunków:
|
|
||||||
</p>
|
|
||||||
<ol>
|
|
||||||
<li>
|
|
||||||
Użytkownik wyraził zgodę na takie przetwarzanie danych <em>po</em> tym, jak został
|
|
||||||
poinformowany bezpośrednio o celu uzyskania dostępu do tej informacji;
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Dostęp do treści plików cookies jest konieczny do dostarczania usługi świadczonej
|
|
||||||
drogą elektroniczną zażądanej przez użytkownika.
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
{(() => {
|
|
||||||
if (this.answers.popup_type == 'none' || this.answers.popup_type == 'page') {
|
|
||||||
return (
|
|
||||||
<p>
|
|
||||||
Jako, że strona nie pytała {_('mnie')} nigdy o zgodę, nie jest spełniony
|
|
||||||
warunek 1.
|
|
||||||
</p>
|
|
||||||
);
|
|
||||||
} else if (this.answers.popup_type === 'passive_popup') {
|
|
||||||
return (
|
|
||||||
<p>
|
|
||||||
Państwa strona nie dała mi nigdy faktycznego wyboru dotyczacego wyrażenia
|
|
||||||
lub odmówienia zgody na takie przetwarzanie danych osobowych, dlatego nie
|
|
||||||
jest spełniony warunek 1.{' '}
|
|
||||||
{this.answers.mentions_passive_consent ? (
|
|
||||||
<>
|
|
||||||
Zgody wyrażonej w sposób bierny lub milczący nie można uznać za ważną
|
|
||||||
w świetle obowiązujących przepisów rozporządzenia 2016/679. Dlatego
|
|
||||||
zaniechanie zmiany ustawień przeglądarki lub po prostu korzystanie ze
|
|
||||||
strony nie stanowi ważnej zgody. Takie jest{' '}
|
|
||||||
<a href="https://assets.midline.pl/pisma/2021-12-16%20odpowiedz%20UODO%20na%20skarg%C4%99%20i(n)Secure.pdf">
|
|
||||||
stanowisko polskiego UODO
|
|
||||||
</a>
|
|
||||||
.
|
|
||||||
</>
|
|
||||||
) : (
|
|
||||||
''
|
|
||||||
)}
|
|
||||||
</p>
|
|
||||||
);
|
|
||||||
} else if (this.answers.popup_type === 'some_choice') {
|
|
||||||
if (this.answers.popup_action === 'none') {
|
|
||||||
return (
|
|
||||||
<p>
|
|
||||||
Nie {_('wyraziłem')} zgody na takie przetwarzanie {_('moich')} danych
|
|
||||||
osobowych. W okienku pytającym o zgodję nic nie {_('kliknąłem')}. Nie
|
|
||||||
jest zatem spełniony warunek 1.
|
|
||||||
</p>
|
|
||||||
);
|
|
||||||
} else if (this.answers.popup_action === 'closed_popup') {
|
|
||||||
return (
|
|
||||||
<p>
|
|
||||||
Nie {_('wyraziłem')} zgody na takie przetwarzanie {_('moich')} danych
|
|
||||||
osobowych. {this.answers.popup_closed_how.trim()}
|
|
||||||
{this.answers.popup_closed_how.trim().at(-1) != '.' ? '.' : ''} Takiego
|
|
||||||
działania nie można uznać za ważną zgodę na przetwarzanie danych
|
|
||||||
osobowych, gdyż nie spełnia warunku jednoznaczności opisanego w Art. 4,
|
|
||||||
pkt 11 RODO. Nie jest zatem spełniony warunek 1.
|
|
||||||
</p>
|
|
||||||
);
|
|
||||||
} else if (this.answers.popup_action == 'deny_all') {
|
|
||||||
return (
|
|
||||||
<p>
|
|
||||||
{this.answers.popup_deny_all_how.trim()}
|
|
||||||
{this.answers.popup_closed_how.trim().at(-1) != '.' ? '.' : ''} Zatem nie
|
|
||||||
jest spełniony warunek 1.
|
|
||||||
</p>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})()}
|
|
||||||
{unnecessary_hosts.length > 0 ? (
|
|
||||||
<p>
|
|
||||||
W {_('mojej')} ocenie odczytywanie przez Państwa stronę treści plików cookies z{' '}
|
|
||||||
{unnecessary_hosts.join(', ')} nie jest konieczne do wyświetlenia treści Państwa
|
|
||||||
strony, dlatego nie jest dla nich spełniony warunek 2. Jeżeli Państwa zdaniem jest
|
|
||||||
inaczej, {_('proszę')} o wskazanie, co jest źródłem tej konieczności i co odróżnia
|
|
||||||
Państwa stronę od wielu innych stron, które realizują te same funkcjonalności{' '}
|
|
||||||
<em>bez</em> korzystania z plików Cookie.
|
|
||||||
</p>
|
|
||||||
) : (
|
|
||||||
''
|
|
||||||
)}
|
|
||||||
<p>
|
|
||||||
{_('Proszę')} o wskazanie, czy być może stosowali Państwo inną podstawę prawną do
|
|
||||||
takiego przetwarzania {_('moich')} danych osobowych, czy przetwarzali je państwo bez
|
|
||||||
ważnej podstawy prawnej?
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
{_('Proszę')} też o wskazanie, czy dostęp do treści plików cookie z $
|
|
||||||
{maybe_unnecessary_hosts.join(', ')} jest konieczny do poprawnego działania strony?
|
|
||||||
Jeżeli tak, to {_('proszę')} wskazać, w jaki sposób. Co sprawia, że strona nie może
|
|
||||||
działać bez nich?
|
|
||||||
</p>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
static qualifies(answers: ParsedAnswers, clusters: RequestCluster[]): boolean {
|
|
||||||
// są cookiesy, nie było zgody, nie są konieczne do działania strony
|
|
||||||
const cookie_clusters = Object.values(clusters).filter((c) => c.hasMarkedCookies());
|
|
||||||
return cookie_clusters.some((cluster) => {
|
|
||||||
const hostAnswers = answers.hosts[cluster.id];
|
|
||||||
return (
|
|
||||||
(hostAnswers.present == 'not_mentioned' ||
|
|
||||||
hostAnswers.present == 'not_before_making_a_choice' ||
|
|
||||||
['none', 'closed_popup', 'deny_all'].includes(hostAnswers.popup_action)) &&
|
|
||||||
hostAnswers.was_processing_necessary != 'yes'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function deduceProblems(
|
export default function deduceProblems(
|
||||||
answers: ParsedAnswers,
|
answers: ParsedAnswers,
|
||||||
|
|
63
report-window/problems/no-information-at-all.tsx
Normal file
63
report-window/problems/no-information-at-all.tsx
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
import { RequestCluster } from '../../request-cluster';
|
||||||
|
import { ExplainerKey } from '../explainers';
|
||||||
|
import { v } from '../verbs';
|
||||||
|
import { Problem } from './problem';
|
||||||
|
|
||||||
|
function formatRange(cluster: RequestCluster) {
|
||||||
|
const parts = [] as string[];
|
||||||
|
console.log(cluster);
|
||||||
|
if (cluster.hasMarkedCookies()) {
|
||||||
|
parts.push('mojego identyfikatora internetowego pozyskanego z Cookie');
|
||||||
|
}
|
||||||
|
if (cluster.exposesOrigin()) {
|
||||||
|
parts.push('części mojej historii przeglądania');
|
||||||
|
}
|
||||||
|
return parts.join(' oraz ');
|
||||||
|
}
|
||||||
|
|
||||||
|
export default class NoInformationAtAllProblem extends Problem {
|
||||||
|
getEmailContent() {
|
||||||
|
const _ = (word: string) => v(word, this.answers.zaimek);
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<h2>Brak informacji na temat przetwarzania danych osobowych</h2>
|
||||||
|
<p>
|
||||||
|
{_('Moje')} dane osobowe zostały ujawnione podmiotom, które są właścicielami domen:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
{this.getMarkedClusters().map((cluster) => (
|
||||||
|
<li key={cluster.id}>
|
||||||
|
{cluster.id} (w zakresie: {formatRange(cluster)})
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
Na stronie brakuje jednak jakichkolwiek informacji o tym, jakie są cele przetwarzania
|
||||||
|
takich danych oraz jakie są podstawy prawne takiego przetwarzania.
|
||||||
|
</p>
|
||||||
|
<p>Zwracam się zatem do Państwa z następującymi pytaniami:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Jaka jest tożsamość właścicieli tych domen?</li>
|
||||||
|
<li>Jaki jest cel takiego przetwarzania danych przez Państwa stronę?</li>
|
||||||
|
<li>
|
||||||
|
Jaka jest podstawa prawna takiego przetwarzania moich danych osobowych przez
|
||||||
|
Państwa stronę?
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
getNecessaryExplainers() {
|
||||||
|
const explainers = [] as Array<ExplainerKey>;
|
||||||
|
|
||||||
|
if (
|
||||||
|
this.getMarkedClusters().some((cluster) => {
|
||||||
|
console.log(cluster);
|
||||||
|
return cluster.hasMarkedCookies();
|
||||||
|
})
|
||||||
|
) {
|
||||||
|
explainers.push('cookies_are_pii');
|
||||||
|
}
|
||||||
|
return explainers;
|
||||||
|
}
|
||||||
|
}
|
14
report-window/problems/problem.ts
Normal file
14
report-window/problems/problem.ts
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
import { RequestCluster } from '../../request-cluster';
|
||||||
|
import { ExplainerKey } from '../explainers';
|
||||||
|
import { ParsedAnswers } from '../parse-answers';
|
||||||
|
|
||||||
|
export abstract class Problem {
|
||||||
|
constructor(public answers: ParsedAnswers, public clusters: Record<string, RequestCluster>) {}
|
||||||
|
|
||||||
|
getMarkedClusters() {
|
||||||
|
return Object.values(this.clusters).filter((c) => c.hasMarks());
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract getEmailContent(): JSX.Element;
|
||||||
|
abstract getNecessaryExplainers(): ExplainerKey[];
|
||||||
|
}
|
168
report-window/problems/unlawful-cookies.tsx
Normal file
168
report-window/problems/unlawful-cookies.tsx
Normal file
|
@ -0,0 +1,168 @@
|
||||||
|
import { RequestCluster } from '../../request-cluster';
|
||||||
|
import { ExplainerKey } from '../explainers';
|
||||||
|
import { ParsedAnswers } from '../parse-answers';
|
||||||
|
import { v } from '../verbs';
|
||||||
|
import { Problem } from './problem';
|
||||||
|
|
||||||
|
export class UnlawfulCookieAccess extends Problem {
|
||||||
|
getNecessaryExplainers(): ExplainerKey[] {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
getEmailContent() {
|
||||||
|
const cookie_clusters = Object.values(this.clusters).filter((c) => c.hasMarkedCookies());
|
||||||
|
const unnecessary_hosts = Object.entries(this.answers.hosts)
|
||||||
|
.filter(([, answers]) => answers.was_processing_necessary === 'no')
|
||||||
|
.map(([host]) => host);
|
||||||
|
const maybe_unnecessary_hosts = Object.entries(this.answers.hosts)
|
||||||
|
.filter(([, answers]) => answers.was_processing_necessary === 'not_sure')
|
||||||
|
.map(([host]) => host);
|
||||||
|
const _ = (key: string) => v(key, this.answers.zaimek);
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<h2>Dostęp do cookies niezgodny z ustawą Prawo Telekomunikacyjne</h2>
|
||||||
|
<p>
|
||||||
|
Państwa strona dokonała odczytu plików Cookie zapisanych na dysku twardym mojego
|
||||||
|
komputera. Dotyczy to plików cookie przypisanych do domen:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
{cookie_clusters.map((cluster, index) => {
|
||||||
|
const names = cluster
|
||||||
|
.getMarkedEntries()
|
||||||
|
.filter((e) => e.source === 'cookie')
|
||||||
|
.map((e) => e.name);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<li>
|
||||||
|
{cluster.id} ({names.length > 1 ? 'pliki' : 'plik'}{' '}
|
||||||
|
{names.map((name, index) => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{index > 0 ? ', ' : ''}
|
||||||
|
{name}
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
){index === cookie_clusters.length - 1 ? '.' : ';'}
|
||||||
|
</li>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
Zgodnie z treścią Art. 173.{' '}
|
||||||
|
<a href="https://isap.sejm.gov.pl/isap.nsf/download.xsp/WDU20041711800/U/D20041800Lj.pdf">
|
||||||
|
ustawy Prawo Telekomunikacyjne
|
||||||
|
</a>
|
||||||
|
, strona może pozyskać dostęp do treści plików cookies pod warunkiem spełnienia
|
||||||
|
jednego z następujących warunków:
|
||||||
|
</p>
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
Użytkownik wyraził zgodę na takie przetwarzanie danych <em>po</em> tym, jak został
|
||||||
|
poinformowany bezpośrednio o celu uzyskania dostępu do tej informacji;
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Dostęp do treści plików cookies jest konieczny do dostarczania usługi świadczonej
|
||||||
|
drogą elektroniczną zażądanej przez użytkownika.
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
{(() => {
|
||||||
|
if (this.answers.popup_type == 'none' || this.answers.popup_type == 'page') {
|
||||||
|
return (
|
||||||
|
<p>
|
||||||
|
Jako, że strona nie pytała {_('mnie')} nigdy o zgodę, nie jest spełniony
|
||||||
|
warunek 1.
|
||||||
|
</p>
|
||||||
|
);
|
||||||
|
} else if (this.answers.popup_type === 'passive_popup') {
|
||||||
|
return (
|
||||||
|
<p>
|
||||||
|
Państwa strona nie dała mi nigdy faktycznego wyboru dotyczacego wyrażenia
|
||||||
|
lub odmówienia zgody na takie przetwarzanie danych osobowych, dlatego nie
|
||||||
|
jest spełniony warunek 1.{' '}
|
||||||
|
{this.answers.mentions_passive_consent ? (
|
||||||
|
<>
|
||||||
|
Zgody wyrażonej w sposób bierny lub milczący nie można uznać za ważną
|
||||||
|
w świetle obowiązujących przepisów rozporządzenia 2016/679. Dlatego
|
||||||
|
zaniechanie zmiany ustawień przeglądarki lub po prostu korzystanie ze
|
||||||
|
strony nie stanowi ważnej zgody. Takie jest{' '}
|
||||||
|
<a href="https://assets.midline.pl/pisma/2021-12-16%20odpowiedz%20UODO%20na%20skarg%C4%99%20i(n)Secure.pdf">
|
||||||
|
stanowisko polskiego UODO
|
||||||
|
</a>
|
||||||
|
.
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
''
|
||||||
|
)}
|
||||||
|
</p>
|
||||||
|
);
|
||||||
|
} else if (this.answers.popup_type === 'some_choice') {
|
||||||
|
if (this.answers.popup_action === 'none') {
|
||||||
|
return (
|
||||||
|
<p>
|
||||||
|
Nie {_('wyraziłem')} zgody na takie przetwarzanie {_('moich')} danych
|
||||||
|
osobowych. W okienku pytającym o zgodję nic nie {_('kliknąłem')}. Nie
|
||||||
|
jest zatem spełniony warunek 1.
|
||||||
|
</p>
|
||||||
|
);
|
||||||
|
} else if (this.answers.popup_action === 'closed_popup') {
|
||||||
|
return (
|
||||||
|
<p>
|
||||||
|
Nie {_('wyraziłem')} zgody na takie przetwarzanie {_('moich')} danych
|
||||||
|
osobowych. {this.answers.popup_closed_how.trim()}
|
||||||
|
{this.answers.popup_closed_how.trim().at(-1) != '.' ? '.' : ''} Takiego
|
||||||
|
działania nie można uznać za ważną zgodę na przetwarzanie danych
|
||||||
|
osobowych, gdyż nie spełnia warunku jednoznaczności opisanego w Art. 4,
|
||||||
|
pkt 11 RODO. Nie jest zatem spełniony warunek 1.
|
||||||
|
</p>
|
||||||
|
);
|
||||||
|
} else if (this.answers.popup_action == 'deny_all') {
|
||||||
|
return (
|
||||||
|
<p>
|
||||||
|
{this.answers.popup_deny_all_how.trim()}
|
||||||
|
{this.answers.popup_closed_how.trim().at(-1) != '.' ? '.' : ''} Zatem nie
|
||||||
|
jest spełniony warunek 1.
|
||||||
|
</p>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})()}
|
||||||
|
{unnecessary_hosts.length > 0 ? (
|
||||||
|
<p>
|
||||||
|
W {_('mojej')} ocenie odczytywanie przez Państwa stronę treści plików cookies z{' '}
|
||||||
|
{unnecessary_hosts.join(', ')} nie jest konieczne do wyświetlenia treści Państwa
|
||||||
|
strony, dlatego nie jest dla nich spełniony warunek 2. Jeżeli Państwa zdaniem jest
|
||||||
|
inaczej, {_('proszę')} o wskazanie, co jest źródłem tej konieczności i co odróżnia
|
||||||
|
Państwa stronę od wielu innych stron, które realizują te same funkcjonalności{' '}
|
||||||
|
<em>bez</em> korzystania z plików Cookie.
|
||||||
|
</p>
|
||||||
|
) : (
|
||||||
|
''
|
||||||
|
)}
|
||||||
|
<p>
|
||||||
|
{_('Proszę')} o wskazanie, czy być może stosowali Państwo inną podstawę prawną do
|
||||||
|
takiego przetwarzania {_('moich')} danych osobowych, czy przetwarzali je państwo bez
|
||||||
|
ważnej podstawy prawnej?
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
{_('Proszę')} też o wskazanie, czy dostęp do treści plików cookie z
|
||||||
|
{maybe_unnecessary_hosts.join(', ')} jest konieczny do poprawnego działania strony?
|
||||||
|
Jeżeli tak, to {_('proszę')} wskazać, w jaki sposób. Co sprawia, że strona nie może
|
||||||
|
działać bez nich?
|
||||||
|
</p>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
static qualifies(answers: ParsedAnswers, clusters: RequestCluster[]): boolean {
|
||||||
|
// są cookiesy, nie było zgody, nie są konieczne do działania strony
|
||||||
|
const cookie_clusters = Object.values(clusters).filter((c) => c.hasMarkedCookies());
|
||||||
|
return cookie_clusters.some((cluster) => {
|
||||||
|
const hostAnswers = answers.hosts[cluster.id];
|
||||||
|
return (
|
||||||
|
(hostAnswers.present == 'not_mentioned' ||
|
||||||
|
hostAnswers.present == 'not_before_making_a_choice' ||
|
||||||
|
['none', 'closed_popup', 'deny_all'].includes(hostAnswers.popup_action)) &&
|
||||||
|
hostAnswers.was_processing_necessary != 'yes'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user