rentgen/report-window/email-template-3.tsx

145 lines
6.5 KiB
TypeScript

import React from 'react';
import { RequestCluster } from '../request-cluster';
import { StolenDataEntry } from '../stolen-data-entry';
import { getDate } from '../util';
import EmailTemplate3Controls from './email-template-3-controls';
import './email-template-3.scss';
declare var PLUGIN_NAME: string;
declare var PLUGIN_URL: string;
export type EmailTemplate3Config = {
pronoun: 0 | 1 | 2 | 3; // masc, fem, neutral, plural
policy_readable: 'null' | 'yes' | 'entirely_obscured_by_popup' | 'cant_find';
hosts_settings: Record<
string,
{
presence: 'null' | 'not_mentioned' | 'mentioned_in_popup' | 'mentioned_in_policy';
legal_basis_type: 'null' | 'consent' | 'legitimate_interest' | 'not_mentioned';
consent_problems?:
| 'claims_consent_but_sends_before_consent'
| 'claims_consent_but_there_was_no_easy_refuse'
| 'none'
| 'null';
legitimate_interest_activity_specified: 'null' | 'no' | 'precise' | 'vague';
legitimate_interest_activity_description: string;
}
>;
popup_type: 'none' | 'passive_cookie_banner' | 'consent';
popup_action: 'ignored' | 'accepted' | 'closed';
popup_closed_how: string;
popup_screenshot_base64: string | null;
popup_accept_all_text: string;
popup_mentions_passive_consent: boolean;
popup_passive_consent_text: string;
};
export default function EmailTemplate3({
entries,
clusters,
}: {
entries: StolenDataEntry[];
clusters: Record<string, RequestCluster>;
version: number;
}): JSX.Element {
const all_host_ids = Array.from(new Set(entries.map((entry) => entry.request.shorthost)));
const [config, setConfig] = React.useState<EmailTemplate3Config>({
pronoun: Math.round(Math.random()) as 0 | 1,
policy_readable: 'null',
hosts_settings: Object.fromEntries(
all_host_ids.map((cluster_id) => [
cluster_id,
{
presence: 'null',
legal_basis_presence: 'null',
legal_basis_type: 'null',
consent_problems: 'null',
legitimate_interest_activity_specified: 'null',
legitimate_interest_activity_description: '',
},
])
),
popup_type: 'none',
popup_action: 'ignored',
popup_screenshot_base64: null,
popup_accept_all_text: 'Zaakceptuj wszystkie',
popup_mentions_passive_consent: false,
popup_passive_consent_text: '',
popup_closed_how: 'kliknięcie przycisku „X”',
});
const visited_url = entries[0].request.originalURL;
const p = config.pronoun;
return (
<div className="mail-wrapper">
<div className="mail-controls">
<EmailTemplate3Controls {...{ config, setConfig, hosts: all_host_ids }} />
</div>
<div className="mail-content-wrapper">
<article className="mail-content">
<p>
Dzień dobry, w dniu {getDate()}{' '}
{['odwiedziłem', 'odwiedziłam', 'odwiedziłom', 'odwiedziliśmy'][p]} stronę{' '}
{visited_url} i {['zbadałem', 'zbadałam', 'zbadałom', 'zbadaliśmy'][p]}
za pomocą wtyczki <a href={PLUGIN_URL}>{PLUGIN_NAME}</a> w celu zbadania,
jakie informacje o {['mnie', 'mnie', 'mnie', 'nas'][p]} wysyła ta strona do
podmiotów trzecich.
</p>
<p>
{['Moją', 'Moją', 'Moją', 'Naszą'][p]} szczególną uwagę przykuło:
WYFILTROWANE WZGLĘDEM TEGO, CZY DANEGO PODMIOTU NIE MA W POLITYCE
PRYWATNOŚCI LUB POWIADOMIENIU O COOKIESACH{' '}
<ul>
<li>
- wysyłanie mojego identyfikatora internetowego [z Cookie] (value)
oraz części mojej historii przeglądania do właściciela domeny
(domain);
</li>
<li> - (...).</li>
</ul>
</p>
<p>
Dane te zostały wysłane zanim{' '}
{['miałem', 'miałam', 'miałom', 'mieliśmy'][p]} szansę przeczytać Państwa
politykę prywatności i w jakikolwiek czynny i jednoznaczny sposób wyrazić
zgodę na takie przetwarzanie moich danych osobowych.
</p>
{!['yes', 'null'].includes(config.policy_readable) ? (
<p>
{['Chciałem', 'Chciałam', 'Chciałom', 'Chcieliśmy'][p]} przeczytać
Państwa politykę prywatności przed akceptacją, ale{' '}
{config.policy_readable == 'cant_find' ? (
<>nie mogę znaleźć jej nigdzie na Państwa stronie.</>
) : (
''
)}{' '}
{config.policy_readable == 'entirely_obscured_by_popup' ? (
<>jest ona przesłonięta przez okienko o RODO.</>
) : (
''
)}
</p>
) : (
''
)}
<p>
Dane zostały udostępnione podmiotom, o których nie{' '}
{['znalazłem', 'znalazłam', 'znalazłom', 'znaleźliśmy'][p]} informacji ani w
Państwa polityce prywatności, ani w żadnym wyskakującym okienku na Państwa
stronie. Z tego powodu zwracam{p == 3 ? 'y' : ''} się do Państwa z pytaniem:
jakie były podstawy prawne takiego ujawnienia{' '}
{['moich', 'moich', 'moich', 'naszych'][p]} danych osobowych wyżej
wymienionym podmiotom? Uprzejmie{' '}
{['proszę', 'proszę', 'proszę', 'prosimy'][p]} o wskazanie podstawy prawnej
dla każdego z tych podmiotów z osobna.
</p>
</article>
</div>
</div>
);
}