Compare commits

..

No commits in common. "468391489ccd9514fd719a794a69ab2e52a8a248" and "54e5040348a374e60ebcfc4e6b91c2aa3fd82936" have entirely different histories.

6 changed files with 328 additions and 343 deletions

View File

@ -39,7 +39,6 @@ export default function EmailContent({
</p>
{problems.map((problem) => problem.getEmailContent())}
{explainers.map((explainer) => explainer(answers.zaimek))}
<h2>Państwa rola jako współadministratora danych osobowych</h2>
<p>
{_('Zwracam')} Państwa uwagę na fakt, że w myśl{' '}
<a href="https://curia.europa.eu/juris/document/document.jsf?text=&docid=216555&pageIndex=0&doclang=PL&mode=lst&dir=&occ=first&part=1&cid=1254905">
@ -48,10 +47,10 @@ export default function EmailContent({
poprzez wysyłanie moich danych w wyżej opisanym zakresie stają się Państwo
współadministratorem moich danych osobowych, dlatego ciąży na Państwu obowiązek
odpowiedzi na moje pytanie na mocy Art. 12 i 13 Rozporządzenia 2016/679 Parlamentu
Europejskiego i Rady (UE) z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w
związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych
oraz uchylenia dyrektywy 95/46/WE (ogólne rozporządzenie o ochronie danych, dalej:
RODO).
Europejskiego i Rady (UE) z dnia 27 kwietnia 2016 r. w sprawie ochrony osób
fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego
przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (ogólne rozporządzenie o
ochronie danych, dalej: RODO).
</p>
</div>
);

View File

@ -3,7 +3,7 @@ export type ExplainerKey = 'cookies_are_pii';
export const Explainers: Record<ExplainerKey, (zaimek_index: 0 | 1 | 2 | 3) => JSX.Element> = {
cookies_are_pii: () => (
<>
<h2>Ciasteczka stanowią dane osobowe</h2>
<h3>Ciasteczka stanowią dane osobowe</h3>
<p>
Sztucznie wygenerowane identyfikatory przechowywane w plikach Cookies stanowią dane
osobowe. Wskazuje na to wprost Art. 4. pkt 1. RODO, wymieniając identyfikator

View File

@ -1,5 +1,4 @@
import { RequestCluster } from '../../request-cluster';
import { wordlist } from '../../util';
import { ExplainerKey } from '../explainers';
import { ParsedAnswers } from '../parse-answers';
import { v } from '../verbs';
@ -146,7 +145,7 @@ export class UnlawfulCookieAccess extends Problem {
{unnecessary_hosts.length > 0 ? (
<p>
W {_('mojej')} ocenie odczytywanie przez Państwa stronę treści plików cookies z{' '}
{wordlist(unnecessary_hosts)} nie jest konieczne do wyświetlenia treści Państwa
{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{' '}
@ -160,16 +159,12 @@ export class UnlawfulCookieAccess extends Problem {
takiego przetwarzania {_('moich')} danych osobowych, czy przetwarzali je państwo bez
ważnej podstawy prawnej?
</p>
{maybe_unnecessary_hosts.length > 1 ? (
<p>
{_('Proszę')} też o wskazanie, czy dostęp do treści plików cookie z
{wordlist(maybe_unnecessary_hosts)} 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?
{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>
) : (
''
)}
</>
);
}

View File

@ -1,6 +1,15 @@
@import '../sidebar/fonts.scss';
@import '../sidebar/colors.scss';
* {
margin: 0px;
box-sizing: border-box;
text-rendering: optimizelegibility;
font-smooth: auto;
-webkit-font-smoothing: auto;
user-select: none;
}
html {
font-size: 1rem;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell,

View File

@ -10,13 +10,10 @@ import { parseAnswers, ParsedAnswers } from './parse-answers';
function Report() {
try {
const url = new URL(document.location.toString());
const origin = url.searchParams.get('origin');
const origin = new URL(document.location.toString()).searchParams.get('origin');
const [counter] = useEmitter(getMemory());
const [answers, setAnswers] = React.useState<ParsedAnswers>(
url.searchParams.get('answers') ? JSON.parse(url.searchParams.get('answers')) : null
);
const [mode, setMode] = React.useState(url.searchParams.get('mode') || 'survey');
const [answers, setAnswers] = React.useState<ParsedAnswers>(null);
const [mode, setMode] = React.useState('survey');
const clusters = getMemory().getClustersForOrigin(origin);
/* const [entries, setEntries] = React.useState<StolenDataEntry[]>([]); */
/* React.useEffect(() => {
@ -33,14 +30,6 @@ function Report() {
/* if (entries.length == 0) {
* return <>Wczytywanie...</>;
* } */
React.useEffect(() => {
const url = new URL(document.location.toString());
url.searchParams.set('origin', origin);
url.searchParams.set('answers', JSON.stringify(answers));
url.searchParams.set('mode', mode);
history.pushState({}, 'Rentgen', url.toString());
}, [mode, answers, origin]);
const visited_url = Object.values(clusters)
.find((cluster) => cluster.getMarkedRequests().length > 0)
?.getMarkedRequests()[0].originalURL;

View File

@ -269,10 +269,3 @@ export function safeDecodeURIComponent(s: string) {
export function normalizeForClassname(string: string) {
return string.replace(/[^a-z0-9]/gi, '-');
}
export function wordlist(words: string[]) {
return words.reduce(
(acc, word, i) => `${acc}${i > 0 ? (i < words.length - 1 ? ',' : ' i') : ''} ${word}`,
''
);
}