Update designs
This commit is contained in:
parent
6faa078095
commit
b92a472569
|
@ -1,3 +1,3 @@
|
||||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M15 22H9V20H15V22ZM15 19H9L8.777 17C8.65703 16.3385 8.45863 15.6936 8.186 15.079C7.832 14.579 7.463 14.152 7.106 13.735C5.79411 12.5053 5.03465 10.7978 5 9C5 5.13401 8.13401 2 12 2C15.866 2 19 5.13401 19 9C18.9593 10.7868 18.2057 12.4831 16.907 13.711L16.89 13.731C16.534 14.148 16.166 14.58 15.819 15.075C15.5466 15.6912 15.3476 16.3373 15.226 17L15 19ZM12 4C9.23995 4.00331 7.00331 6.23995 7 9C7 10.544 7.644 11.293 8.618 12.428C8.988 12.86 9.408 13.348 9.818 13.919C10.3156 14.8858 10.6555 15.9259 10.825 17H13.176C13.3499 15.929 13.6892 14.8916 14.182 13.925C14.582 13.354 15.001 12.863 15.37 12.431L15.385 12.413C16.357 11.273 17 10.52 17 9C16.9967 6.23995 14.7601 4.00331 12 4Z" fill="#2E3A59"/>
|
<path d="M15 22H9V20H15V22ZM15 19H9L8.777 17C8.65703 16.3385 8.45863 15.6936 8.186 15.079C7.832 14.579 7.463 14.152 7.106 13.735C5.79411 12.5053 5.03465 10.7978 5 9C5 5.13401 8.13401 2 12 2C15.866 2 19 5.13401 19 9C18.9593 10.7868 18.2057 12.4831 16.907 13.711L16.89 13.731C16.534 14.148 16.166 14.58 15.819 15.075C15.5466 15.6912 15.3476 16.3373 15.226 17L15 19ZM12 4C9.23995 4.00331 7.00331 6.23995 7 9C7 10.544 7.644 11.293 8.618 12.428C8.988 12.86 9.408 13.348 9.818 13.919C10.3156 14.8858 10.6555 15.9259 10.825 17H13.176C13.3499 15.929 13.6892 14.8916 14.182 13.925C14.582 13.354 15.001 12.863 15.37 12.431L15.385 12.413C16.357 11.273 17 10.52 17 9C16.9967 6.23995 14.7601 4.00331 12 4Z" fill="#000000"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 814 B After Width: | Height: | Size: 814 B |
|
@ -1,3 +1,3 @@
|
||||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M18 22H6C4.89543 22 4 21.1046 4 20V4.00001C4 2.89544 4.89543 2.00001 6 2.00001H13C13.2654 1.99907 13.5201 2.10462 13.707 2.29301L19.707 8.29301C19.8954 8.47994 20.0009 8.73462 20 9.00001V20C20 21.1046 19.1046 22 18 22ZM6 4.00001V20H16.586L14.02 17.434C13.4101 17.8017 12.7121 17.9973 12 18C10.1612 18.0199 8.54049 16.7967 8.05545 15.0229C7.57041 13.2491 8.34318 11.3714 9.93625 10.4529C11.5293 9.53434 13.5415 9.80626 14.8337 11.1147C16.1258 12.4231 16.3724 14.4386 15.434 16.02L18 18.588V9.41401L12.586 4.00001H6ZM12 12C10.8954 12 10 12.8954 10 14C10 15.1046 10.8954 16 12 16C13.1046 16 14 15.1046 14 14C14 12.8954 13.1046 12 12 12Z" fill="#2E3A59"/>
|
<path d="M18 22H6C4.89543 22 4 21.1046 4 20V4.00001C4 2.89544 4.89543 2.00001 6 2.00001H13C13.2654 1.99907 13.5201 2.10462 13.707 2.29301L19.707 8.29301C19.8954 8.47994 20.0009 8.73462 20 9.00001V20C20 21.1046 19.1046 22 18 22ZM6 4.00001V20H16.586L14.02 17.434C13.4101 17.8017 12.7121 17.9973 12 18C10.1612 18.0199 8.54049 16.7967 8.05545 15.0229C7.57041 13.2491 8.34318 11.3714 9.93625 10.4529C11.5293 9.53434 13.5415 9.80626 14.8337 11.1147C16.1258 12.4231 16.3724 14.4386 15.434 16.02L18 18.588V9.41401L12.586 4.00001H6ZM12 12C10.8954 12 10 12.8954 10 14C10 15.1046 10.8954 16 12 16C13.1046 16 14 15.1046 14 14C14 12.8954 13.1046 12 12 12Z" fill="#000000"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 764 B After Width: | Height: | Size: 764 B |
|
@ -1,3 +1,3 @@
|
||||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M18 22H6C4.89543 22 4 21.1046 4 20V4C4 2.89543 4.89543 2 6 2H13C13.0109 2.00047 13.0217 2.00249 13.032 2.006C13.0418 2.00902 13.0518 2.01103 13.062 2.012C13.1502 2.01765 13.2373 2.0348 13.321 2.063L13.349 2.072C13.3717 2.07968 13.3937 2.08904 13.415 2.1C13.5239 2.14842 13.6232 2.21618 13.708 2.3L19.708 8.3C19.7918 8.38479 19.8596 8.48406 19.908 8.593C19.918 8.615 19.925 8.638 19.933 8.661L19.942 8.687C19.9699 8.77039 19.9864 8.85718 19.991 8.945C19.9926 8.95418 19.9949 8.96322 19.998 8.972C19.9998 8.98122 20.0004 8.99062 20.0001 9V20C20.0001 21.1046 19.1046 22 18 22ZM6 4V20H18V10H13C12.4477 10 12 9.55228 12 9V4H6ZM14 5.414V8H16.586L14 5.414ZM15 16H9V14H15V16Z" fill="#2E3A59"/>
|
<path d="M18 22H6C4.89543 22 4 21.1046 4 20V4C4 2.89543 4.89543 2 6 2H13C13.0109 2.00047 13.0217 2.00249 13.032 2.006C13.0418 2.00902 13.0518 2.01103 13.062 2.012C13.1502 2.01765 13.2373 2.0348 13.321 2.063L13.349 2.072C13.3717 2.07968 13.3937 2.08904 13.415 2.1C13.5239 2.14842 13.6232 2.21618 13.708 2.3L19.708 8.3C19.7918 8.38479 19.8596 8.48406 19.908 8.593C19.918 8.615 19.925 8.638 19.933 8.661L19.942 8.687C19.9699 8.77039 19.9864 8.85718 19.991 8.945C19.9926 8.95418 19.9949 8.96322 19.998 8.972C19.9998 8.98122 20.0004 8.99062 20.0001 9V20C20.0001 21.1046 19.1046 22 18 22ZM6 4V20H18V10H13C12.4477 10 12 9.55228 12 9V4H6ZM14 5.414V8H16.586L14 5.414ZM15 16H9V14H15V16Z" fill="#000000"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 798 B After Width: | Height: | Size: 798 B |
|
@ -48,10 +48,10 @@ export default function EmailContent({
|
||||||
poprzez wysyłanie moich danych w wyżej opisanym zakresie stają się Państwo
|
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
|
współadministratorem moich danych osobowych, dlatego ciąży na Państwu obowiązek
|
||||||
odpowiedzi na moje pytania na mocy Art. 12 i 13 Rozporządzenia 2016/679 Parlamentu
|
odpowiedzi na moje pytania 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
|
Europejskiego i Rady (UE) z dnia 27 kwietnia 2016 r. w sprawie ochrony osób
|
||||||
związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych
|
fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego
|
||||||
oraz uchylenia dyrektywy 95/46/WE (ogólne rozporządzenie o ochronie danych, dalej:
|
przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (ogólne rozporządzenie o
|
||||||
„RODO”).
|
ochronie danych, dalej: „RODO”).
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
@ -96,8 +96,8 @@ function generateHostPage(
|
||||||
choices: [
|
choices: [
|
||||||
{
|
{
|
||||||
value: 'precise',
|
value: 'precise',
|
||||||
text: /* HTML */ `Tak, wskazuje jasno na bieżące działania lub korzyści wynikające
|
text: /* HTML */ `Tak, wskazuje jasno na bieżące działania lub korzyści
|
||||||
z takiego przetwarzania danych.`,
|
wynikające z takiego przetwarzania danych.`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: 'vague',
|
value: 'vague',
|
||||||
|
@ -191,8 +191,8 @@ export default function generateSurveyQuestions(hosts: string[]) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: 'passive_popup',
|
value: 'passive_popup',
|
||||||
text: /* HTML */ `Okienko o cookiesach, bez możliwości podjęcia żadnego
|
text: /* HTML */ `Okienko o cookiesach, bez możliwości podjęcia
|
||||||
wyboru (np. tylko opcja „zamknij”)`,
|
żadnego wyboru (np. tylko opcja „zamknij”)`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: 'some_choice',
|
value: 'some_choice',
|
||||||
|
@ -204,8 +204,8 @@ export default function generateSurveyQuestions(hosts: string[]) {
|
||||||
type: 'checkbox',
|
type: 'checkbox',
|
||||||
title: /* HTML */ `Istnieje możliwość, że okienko z informacjami i wyborami
|
title: /* HTML */ `Istnieje możliwość, że okienko z informacjami i wyborami
|
||||||
dotyczącymi przetwarzania {Twoich} danych osobowych ukazało się dawno temu w
|
dotyczącymi przetwarzania {Twoich} danych osobowych ukazało się dawno temu w
|
||||||
trakcie {twojej} wcześniejszej wizyty i wtedy je {odkliknąłeś}. {Otwórz} tę samą
|
trakcie {twojej} wcześniejszej wizyty i wtedy je {odkliknąłeś}. {Otwórz} tę
|
||||||
stronę w Trybie Prywatnym (Incognito). Co {widzisz}?`,
|
samą stronę w Trybie Prywatnym (Incognito). Co {widzisz}?`,
|
||||||
visibleIf: "{popup_type} = 'none' or {popup_type} = 'page'",
|
visibleIf: "{popup_type} = 'none' or {popup_type} = 'page'",
|
||||||
name: 'is_incognito_different',
|
name: 'is_incognito_different',
|
||||||
isRequired: true,
|
isRequired: true,
|
||||||
|
@ -220,9 +220,9 @@ export default function generateSurveyQuestions(hosts: string[]) {
|
||||||
type: 'html',
|
type: 'html',
|
||||||
visibleIf:
|
visibleIf:
|
||||||
'{is_incognito_different} != "no" and ({popup_type} = "none" or {popup_type} = "page") ',
|
'{is_incognito_different} != "no" and ({popup_type} = "none" or {popup_type} = "page") ',
|
||||||
html: /* HTML */ `Jeżeli w trybie incognito widzisz więcej okienek z informacjami
|
html: /* HTML */ `Jeżeli w trybie incognito widzisz więcej okienek z
|
||||||
o przetwarzaniu danych osobowych, wykonaj analizę w normalnym trybie ponownie -
|
informacjami o przetwarzaniu danych osobowych, wykonaj analizę w
|
||||||
ale najpierw usuń pliki cookies tej strony.
|
normalnym trybie ponownie - ale najpierw usuń pliki cookies tej strony.
|
||||||
<a
|
<a
|
||||||
href="https://support.mozilla.org/pl/kb/usuwanie-ciasteczek-i-danych-stron-firefox?redirectslug=usuwanie-ciasteczek&redirectlocale=pl"
|
href="https://support.mozilla.org/pl/kb/usuwanie-ciasteczek-i-danych-stron-firefox?redirectslug=usuwanie-ciasteczek&redirectlocale=pl"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
|
|
@ -11,13 +11,10 @@ function handleNewFile(
|
||||||
const reader = new FileReader();
|
const reader = new FileReader();
|
||||||
reader.addEventListener('load', () => {
|
reader.addEventListener('load', () => {
|
||||||
const content = JSON.parse(reader.result as string);
|
const content = JSON.parse(reader.result as string);
|
||||||
content.log.entries = content.log.entries.filter(
|
content.log.entries = content.log.entries.filter((har_entry: HAREntry) =>
|
||||||
(har_entry: HAREntry) =>
|
|
||||||
entries.some((entry) => entry.matchesHAREntry(har_entry))
|
entries.some((entry) => entry.matchesHAREntry(har_entry))
|
||||||
);
|
);
|
||||||
setFiltered(
|
setFiltered(new Blob([JSON.stringify(content)], { type: 'application/json' }));
|
||||||
new Blob([JSON.stringify(content)], { type: 'application/json' })
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
reader.readAsText(element.files[0]);
|
reader.readAsText(element.files[0]);
|
||||||
}
|
}
|
||||||
|
@ -30,10 +27,7 @@ function generateFakeHAR(entries: StolenDataEntry[]) {
|
||||||
} else if (request1.shorthost > request2.shorthost) {
|
} else if (request1.shorthost > request2.shorthost) {
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
return (
|
return request2.getBalancedPriority() - request1.getBalancedPriority();
|
||||||
request2.getBalancedPriority() -
|
|
||||||
request1.getBalancedPriority()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.filter((_, index, array) => {
|
.filter((_, index, array) => {
|
||||||
|
@ -43,10 +37,7 @@ function generateFakeHAR(entries: StolenDataEntry[]) {
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
})
|
})
|
||||||
.sort(
|
.sort((entry1, entry2) => entry2.getBalancedPriority() - entry1.getBalancedPriority());
|
||||||
(entry1, entry2) =>
|
|
||||||
entry2.getBalancedPriority() - entry1.getBalancedPriority()
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
log: {
|
log: {
|
||||||
|
@ -75,15 +66,10 @@ function generateFakeHAR(entries: StolenDataEntry[]) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function HARConverter({
|
export default function HARConverter({ entries }: { entries: StolenDataEntry[] }) {
|
||||||
entries,
|
|
||||||
}: {
|
|
||||||
entries: StolenDataEntry[];
|
|
||||||
}) {
|
|
||||||
const [filtered, setFiltered] = React.useState<Blob | null>(null);
|
const [filtered, setFiltered] = React.useState<Blob | null>(null);
|
||||||
const [filename, setFilename] = React.useState('');
|
const [filename, setFilename] = React.useState('');
|
||||||
const [fakeHAR, setFakeHAR] =
|
const [fakeHAR, setFakeHAR] = React.useState<ReturnType<typeof generateFakeHAR>>();
|
||||||
React.useState<ReturnType<typeof generateFakeHAR>>();
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
setFakeHAR(generateFakeHAR(entries));
|
setFakeHAR(generateFakeHAR(entries));
|
||||||
}, []);
|
}, []);
|
||||||
|
|
|
@ -9,12 +9,13 @@ export default class NoInformationAtAllProblem extends Problem {
|
||||||
<>
|
<>
|
||||||
<h2>Brak informacji na temat przetwarzania danych osobowych</h2>
|
<h2>Brak informacji na temat przetwarzania danych osobowych</h2>
|
||||||
<p>
|
<p>
|
||||||
{_('Moje')} dane osobowe zostały ujawnione podmiotom, które są właścicielami domen:
|
{_('Moje')} dane osobowe zostały ujawnione podmiotom, które są właścicielami
|
||||||
|
domen:
|
||||||
</p>
|
</p>
|
||||||
{this.getRangeDescription()}
|
{this.getRangeDescription()}
|
||||||
<p>
|
<p>
|
||||||
Na stronie brakuje jednak jakichkolwiek informacji o tym, jakie są cele przetwarzania
|
Na stronie brakuje jednak jakichkolwiek informacji o tym, jakie są cele
|
||||||
takich danych oraz jakie są podstawy prawne takiego przetwarzania.
|
przetwarzania takich danych oraz jakie są podstawy prawne takiego przetwarzania.
|
||||||
</p>
|
</p>
|
||||||
<p>Zwracam się zatem do Państwa z następującymi pytaniami:</p>
|
<p>Zwracam się zatem do Państwa z następującymi pytaniami:</p>
|
||||||
<ul>
|
<ul>
|
||||||
|
|
|
@ -74,34 +74,36 @@ export class UnlawfulCookieAccess extends Problem {
|
||||||
</p>
|
</p>
|
||||||
<ol>
|
<ol>
|
||||||
<li>
|
<li>
|
||||||
Użytkownik wyraził zgodę na takie przetwarzanie danych <em>po</em> tym, jak został
|
Użytkownik wyraził zgodę na takie przetwarzanie danych <em>po</em> tym, jak
|
||||||
poinformowany bezpośrednio o celu uzyskania dostępu do tej informacji;
|
został poinformowany bezpośrednio o celu uzyskania dostępu do tej
|
||||||
|
informacji;
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
Dostęp do treści plików cookies jest konieczny do dostarczania usługi świadczonej
|
Dostęp do treści plików cookies jest konieczny do dostarczania usługi
|
||||||
drogą elektroniczną zażądanej przez użytkownika.
|
świadczonej drogą elektroniczną zażądanej przez użytkownika.
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
{(() => {
|
{(() => {
|
||||||
if (this.answers.popup_type == 'none' || this.answers.popup_type == 'page') {
|
if (this.answers.popup_type == 'none' || this.answers.popup_type == 'page') {
|
||||||
return (
|
return (
|
||||||
<p>
|
<p>
|
||||||
Jako, że strona nie pytała {_('mnie')} nigdy o zgodę, nie jest spełniony
|
Jako, że strona nie pytała {_('mnie')} nigdy o zgodę, nie jest
|
||||||
warunek 1.
|
spełniony warunek 1.
|
||||||
</p>
|
</p>
|
||||||
);
|
);
|
||||||
} else if (this.answers.popup_type === 'passive_popup') {
|
} else if (this.answers.popup_type === 'passive_popup') {
|
||||||
return (
|
return (
|
||||||
<p>
|
<p>
|
||||||
Państwa strona nie dała mi nigdy faktycznego wyboru dotyczącego wyrażenia
|
Państwa strona nie dała mi nigdy faktycznego wyboru dotyczącego
|
||||||
lub odmówienia zgody na takie przetwarzanie danych osobowych, dlatego nie
|
wyrażenia lub odmówienia zgody na takie przetwarzanie danych
|
||||||
jest spełniony warunek 1.{' '}
|
osobowych, dlatego nie jest spełniony warunek 1.{' '}
|
||||||
{this.answers.mentions_passive_consent ? (
|
{this.answers.mentions_passive_consent ? (
|
||||||
<>
|
<>
|
||||||
Zgody wyrażonej w sposób bierny lub milczący nie można uznać za ważną
|
Zgody wyrażonej w sposób bierny lub milczący nie można uznać
|
||||||
w świetle obowiązujących przepisów rozporządzenia 2016/679. Dlatego
|
za ważną w świetle obowiązujących przepisów rozporządzenia
|
||||||
zaniechanie zmiany ustawień przeglądarki lub po prostu korzystanie ze
|
2016/679. Dlatego zaniechanie zmiany ustawień przeglądarki
|
||||||
strony nie stanowi ważnej zgody. Takie jest{' '}
|
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">
|
<a href="https://assets.midline.pl/pisma/2021-12-16%20odpowiedz%20UODO%20na%20skarg%C4%99%20i(n)Secure.pdf">
|
||||||
stanowisko polskiego UODO
|
stanowisko polskiego UODO
|
||||||
</a>
|
</a>
|
||||||
|
@ -116,28 +118,33 @@ export class UnlawfulCookieAccess extends Problem {
|
||||||
if (this.answers.popup_action === 'none') {
|
if (this.answers.popup_action === 'none') {
|
||||||
return (
|
return (
|
||||||
<p>
|
<p>
|
||||||
Nie {_('wyraziłem')} zgody na takie przetwarzanie {_('moich')} danych
|
Nie {_('wyraziłem')} zgody na takie przetwarzanie {_('moich')}{' '}
|
||||||
osobowych. W okienku pytającym o zgodję nic nie {_('kliknąłem')}. Nie
|
danych osobowych. W okienku pytającym o zgodję nic nie{' '}
|
||||||
jest zatem spełniony warunek 1.
|
{_('kliknąłem')}. Nie jest zatem spełniony warunek 1.
|
||||||
</p>
|
</p>
|
||||||
);
|
);
|
||||||
} else if (this.answers.popup_action === 'closed_popup') {
|
} else if (this.answers.popup_action === 'closed_popup') {
|
||||||
return (
|
return (
|
||||||
<p>
|
<p>
|
||||||
Nie {_('wyraziłem')} zgody na takie przetwarzanie {_('moich')} danych
|
Nie {_('wyraziłem')} zgody na takie przetwarzanie {_('moich')}{' '}
|
||||||
osobowych. {this.answers.popup_closed_how.trim()}
|
danych osobowych. {this.answers.popup_closed_how.trim()}
|
||||||
{this.answers.popup_closed_how.trim().at(-1) != '.' ? '.' : ''} Takiego
|
{this.answers.popup_closed_how.trim().at(-1) != '.'
|
||||||
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.
|
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>
|
</p>
|
||||||
);
|
);
|
||||||
} else if (this.answers.popup_action == 'deny_all') {
|
} else if (this.answers.popup_action == 'deny_all') {
|
||||||
return (
|
return (
|
||||||
<p>
|
<p>
|
||||||
{this.answers.popup_deny_all_how.trim()}
|
{this.answers.popup_deny_all_how.trim()}
|
||||||
{this.answers.popup_closed_how.trim().at(-1) != '.' ? '.' : ''} Zatem nie
|
{this.answers.popup_closed_how.trim().at(-1) != '.'
|
||||||
jest spełniony warunek 1.
|
? '.'
|
||||||
|
: ''}{' '}
|
||||||
|
Zatem nie jest spełniony warunek 1.
|
||||||
</p>
|
</p>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -145,27 +152,27 @@ export class UnlawfulCookieAccess extends Problem {
|
||||||
})()}
|
})()}
|
||||||
{unnecessary_hosts.length > 0 ? (
|
{unnecessary_hosts.length > 0 ? (
|
||||||
<p>
|
<p>
|
||||||
W {_('mojej')} ocenie odczytywanie przez Państwa stronę treści plików cookies z{' '}
|
W {_('mojej')} ocenie odczytywanie przez Państwa stronę treści plików
|
||||||
{wordlist(unnecessary_hosts)} nie jest konieczne do wyświetlenia treści Państwa
|
cookies z {wordlist(unnecessary_hosts)} nie jest konieczne do wyświetlenia
|
||||||
strony, dlatego nie jest dla nich spełniony warunek 2. Jeżeli Państwa zdaniem jest
|
treści Państwa strony, dlatego nie jest dla nich spełniony warunek 2. Jeżeli
|
||||||
inaczej, {_('proszę')} o wskazanie, co jest źródłem tej konieczności i co odróżnia
|
Państwa zdaniem jest inaczej, {_('proszę')} o wskazanie, co jest źródłem tej
|
||||||
Państwa stronę od wielu innych stron, które realizują te same funkcjonalności{' '}
|
konieczności i co odróżnia Państwa stronę od wielu innych stron, które
|
||||||
<em>bez</em> korzystania z plików Cookie.
|
realizują te same funkcjonalności <em>bez</em> korzystania z plików Cookie.
|
||||||
</p>
|
</p>
|
||||||
) : (
|
) : (
|
||||||
''
|
''
|
||||||
)}
|
)}
|
||||||
<p>
|
<p>
|
||||||
{_('Proszę')} o wskazanie, czy być może stosowali Państwo inną podstawę prawną do
|
{_('Proszę')} o wskazanie, czy być może stosowali Państwo inną podstawę prawną
|
||||||
takiego przetwarzania {_('moich')} danych osobowych, czy przetwarzali je państwo bez
|
do takiego przetwarzania {_('moich')} danych osobowych, czy przetwarzali je
|
||||||
ważnej podstawy prawnej?
|
państwo bez ważnej podstawy prawnej?
|
||||||
</p>
|
</p>
|
||||||
{maybe_unnecessary_hosts.length > 1 ? (
|
{maybe_unnecessary_hosts.length > 1 ? (
|
||||||
<p>
|
<p>
|
||||||
{_('Proszę')} też o wskazanie, czy dostęp do treści plików cookie z
|
{_('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?
|
{wordlist(maybe_unnecessary_hosts)} jest konieczny do poprawnego działania
|
||||||
Jeżeli tak, to {_('proszę')} wskazać, w jaki sposób. Co sprawia, że strona nie
|
strony? Jeżeli tak, to {_('proszę')} wskazać, w jaki sposób. Co sprawia, że
|
||||||
może działać bez nich?
|
strona nie może działać bez nich?
|
||||||
</p>
|
</p>
|
||||||
) : (
|
) : (
|
||||||
''
|
''
|
||||||
|
|
|
@ -23,7 +23,8 @@ export class UnlawfulData extends Problem {
|
||||||
<>
|
<>
|
||||||
<h2>Przetwarzanie danych osobowych bez ważnej podsawy prawnej</h2>
|
<h2>Przetwarzanie danych osobowych bez ważnej podsawy prawnej</h2>
|
||||||
<p>
|
<p>
|
||||||
{_('Moje')} dane osobowe zostały ujawnione podmiotom, które są właścicielami domen:
|
{_('Moje')} dane osobowe zostały ujawnione podmiotom, które są właścicielami
|
||||||
|
domen:
|
||||||
</p>
|
</p>
|
||||||
{this.getRangeDescription()}
|
{this.getRangeDescription()}
|
||||||
</>
|
</>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
.sidebar {
|
.sidebar {
|
||||||
.header {
|
.header {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1.75rem 1fr 1.25rem;
|
grid-template-columns: 1.75rem 1fr 10rem;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
max-height: 3.5rem;
|
max-height: 3.5rem;
|
||||||
min-height: 3.5rem;
|
min-height: 3.5rem;
|
||||||
|
@ -13,10 +13,6 @@
|
||||||
background: #ffffff;
|
background: #ffffff;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
|
||||||
&--without-logo {
|
|
||||||
grid-template-columns: 1fr 1.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.webpage-metadata {
|
.webpage-metadata {
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -112,4 +108,41 @@
|
||||||
align-self: flex-start;
|
align-self: flex-start;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.button {
|
||||||
|
border: 0;
|
||||||
|
outline: 0;
|
||||||
|
height: 3rem;
|
||||||
|
font-size: 0.875rem;
|
||||||
|
line-height: 0.875rem;
|
||||||
|
height: 2.5rem;
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #000 !important;
|
||||||
|
|
||||||
|
&--report {
|
||||||
|
font-weight: 800;
|
||||||
|
padding: 0 1.5rem;
|
||||||
|
margin-left: 0.5rem;
|
||||||
|
background-color: #000;
|
||||||
|
color: $icd-rentgen-color;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-image: linear-gradient(
|
||||||
|
to right,
|
||||||
|
$icd-rentgen-color 0%,
|
||||||
|
$icd-rentgen-color 4%,
|
||||||
|
#000 4%,
|
||||||
|
#000 100%
|
||||||
|
);
|
||||||
|
animation: slidebg 1s cubic-bezier(0.19, 1, 0.22, 1) infinite;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes slidebg {
|
||||||
|
to {
|
||||||
|
background-position: 155px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,6 @@ import './../../styles/global.scss';
|
||||||
import './sidebar.scss';
|
import './sidebar.scss';
|
||||||
|
|
||||||
const Sidebar = () => {
|
const Sidebar = () => {
|
||||||
// const [origin, setOrigin] = React.useState<string | null>(null);
|
|
||||||
const url = new URL(document.location.toString());
|
const url = new URL(document.location.toString());
|
||||||
const origin = url.searchParams.get('origin');
|
const origin = url.searchParams.get('origin');
|
||||||
|
|
||||||
|
@ -70,15 +69,23 @@ const Sidebar = () => {
|
||||||
<span>Przejdź do wybranej strony internetowej</span>
|
<span>Przejdź do wybranej strony internetowej</span>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
{stolenDataView ? (
|
<button
|
||||||
<a href="https://internet-czas-dzialac.pl">
|
className="button button--report"
|
||||||
<img src="/assets/icons/info_circle_outline.svg" width="20" height="20" />
|
onClick={() => {
|
||||||
</a>
|
const params = [
|
||||||
) : (
|
'height=' + screen.height,
|
||||||
<button onClick={() => setStolenDataView(true)}>
|
'width=' + screen.width,
|
||||||
<img src="/assets/icons/short_left.svg" width="20" height="20" />
|
'fullscreen=yes',
|
||||||
|
].join(',');
|
||||||
|
window.open(
|
||||||
|
`/components/report-window/report-window.html?origin=${origin}`,
|
||||||
|
'new_window',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Generuj raport
|
||||||
</button>
|
</button>
|
||||||
)}
|
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
{stolenDataView ? (
|
{stolenDataView ? (
|
||||||
|
@ -126,27 +133,24 @@ const Sidebar = () => {
|
||||||
{detailsVisibility ? 'Ukryj szczegóły' : 'Wyświetlaj szczegóły'}
|
{detailsVisibility ? 'Ukryj szczegóły' : 'Wyświetlaj szczegóły'}
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
|
{localStorage.getItem('blottingBrowser') ===
|
||||||
|
'nikttakniesplamitwojejprzeglądarkijakspidersweb' ? (
|
||||||
<button
|
<button
|
||||||
onClick={async () => {
|
onClick={() => {
|
||||||
if (
|
if (
|
||||||
window.confirm(
|
window.confirm(
|
||||||
'Czy chcesz wczytać wszystkie domeny w celu „splamienia” twojej przeglądarki? (Ten krok jest opcjonalny)'
|
'Czy chcesz wczytać wszystkie domeny w celu „splamienia” twojej przeglądarki? Uwaga przeglądarka może zablokować otwieranie nowych kart. (Ten krok jest opcjonalny)'
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
let deep_copy = JSON.parse(
|
let deep_copy = JSON.parse(
|
||||||
JSON.stringify(
|
JSON.stringify(
|
||||||
Object.values(getMemory().getClustersForOrigin(origin)).map(
|
Object.values(
|
||||||
(domain) => domain.id
|
getMemory().getClustersForOrigin(origin)
|
||||||
)
|
).map((domain) => domain.id)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
console.log('deep_copy', deep_copy);
|
|
||||||
for (const domain of deep_copy) {
|
for (const domain of deep_copy) {
|
||||||
const win = window.open(
|
window.open(`https://${domain}`);
|
||||||
`https://${domain}`,
|
|
||||||
'_blank',
|
|
||||||
`width=400,height=450,screenX=300,screenY=200`
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
@ -154,6 +158,7 @@ const Sidebar = () => {
|
||||||
<img src="/assets/icons/bulb.svg" width="20" height="20" />
|
<img src="/assets/icons/bulb.svg" width="20" height="20" />
|
||||||
<span>Odwiedź wszystkie domeny</span>
|
<span>Odwiedź wszystkie domeny</span>
|
||||||
</button>
|
</button>
|
||||||
|
) : null}
|
||||||
</nav>
|
</nav>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
|
@ -202,6 +207,7 @@ const Sidebar = () => {
|
||||||
setWarningDataDialogAck={setWarningDataDialogAck}
|
setWarningDataDialogAck={setWarningDataDialogAck}
|
||||||
detailsVisibility={detailsVisibility}
|
detailsVisibility={detailsVisibility}
|
||||||
setDetailsVisibility={setDetailsVisibility}
|
setDetailsVisibility={setDetailsVisibility}
|
||||||
|
setStolenDataView={setStolenDataView}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</section>
|
</section>
|
||||||
|
|
|
@ -83,6 +83,7 @@
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
text-overflow: clip;
|
text-overflow: clip;
|
||||||
padding-left: 0.25rem;
|
padding-left: 0.25rem;
|
||||||
|
padding-right: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.icons {
|
.icons {
|
||||||
|
|
|
@ -15,7 +15,7 @@ function StolenDataValue({ entry }: { entry: StolenDataEntry; prefixKey?: string
|
||||||
body = <></>;
|
body = <></>;
|
||||||
} else {
|
} else {
|
||||||
body = (
|
body = (
|
||||||
<div data-version={version}>{maskString(entry.value, 1, MAX_STRING_VALUE_LENGTH)}</div>
|
<div data-version={version}>{entry.value}</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
|
@ -26,7 +26,7 @@ function StolenDataValue({ entry }: { entry: StolenDataEntry; prefixKey?: string
|
||||||
getMemory().emit('change', false, entry.request.shorthost, 'clicked value');
|
getMemory().emit('change', false, entry.request.shorthost, 'clicked value');
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
}}
|
}}
|
||||||
title={maskString(entry.value, 1, MAX_STRING_VALUE_LENGTH)}
|
title={entry.value}
|
||||||
>
|
>
|
||||||
{body}
|
{body}
|
||||||
</td>
|
</td>
|
||||||
|
@ -41,7 +41,7 @@ function StolenDataRow({ entry }: { entry: StolenDataEntry }) {
|
||||||
data-version={version}
|
data-version={version}
|
||||||
className={`${entry.isMarked ? 'toggled' : 'untoggled'}`}
|
className={`${entry.isMarked ? 'toggled' : 'untoggled'}`}
|
||||||
>
|
>
|
||||||
<td className="checkbox">
|
{/* <td className="checkbox">
|
||||||
<input
|
<input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
checked={entry.isMarked}
|
checked={entry.isMarked}
|
||||||
|
@ -55,18 +55,18 @@ function StolenDataRow({ entry }: { entry: StolenDataEntry }) {
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</td>
|
</td> */}
|
||||||
<th
|
<th
|
||||||
title={`Nazwa: ${entry.name}\nŹródło: ${entry.source}`}
|
title={`Nazwa: ${entry.name}\nŹródło: ${entry.source}`}
|
||||||
onClick={() => {
|
// onClick={() => {
|
||||||
entry.toggleMark();
|
// entry.toggleMark();
|
||||||
getMemory().emit(
|
// getMemory().emit(
|
||||||
'change',
|
// 'change',
|
||||||
false,
|
// false,
|
||||||
entry.request.shorthost,
|
// entry.request.shorthost,
|
||||||
'Clicked entry name'
|
// 'Clicked entry name'
|
||||||
);
|
// );
|
||||||
}}
|
// }}
|
||||||
>
|
>
|
||||||
{entry.name}
|
{entry.name}
|
||||||
</th>
|
</th>
|
||||||
|
|
|
@ -19,6 +19,7 @@ const Toolbar = () => {
|
||||||
const [stolenDataView, setStolenDataView] = React.useState<boolean>(true);
|
const [stolenDataView, setStolenDataView] = React.useState<boolean>(true);
|
||||||
const [eventCounts, setEventCounts] = useEmitter(getMemory());
|
const [eventCounts, setEventCounts] = useEmitter(getMemory());
|
||||||
const [cookieDomainCopy, setCookieDomainCopy] = React.useState<string | null>(null);
|
const [cookieDomainCopy, setCookieDomainCopy] = React.useState<string | null>(null);
|
||||||
|
const [marksOccurrence, setMarksOccurrence] = React.useState<boolean>(false);
|
||||||
const [exposedOriginDomainCopy, setExposedOriginDomainCopy] = React.useState<string | null>(
|
const [exposedOriginDomainCopy, setExposedOriginDomainCopy] = React.useState<string | null>(
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
@ -109,6 +110,23 @@ const Toolbar = () => {
|
||||||
}
|
}
|
||||||
}, [eventCounts['*'], origin]);
|
}, [eventCounts['*'], origin]);
|
||||||
|
|
||||||
|
React.useEffect(() => {
|
||||||
|
for (const cluster of Object.values(getMemory().getClustersForOrigin(origin))) {
|
||||||
|
if (cluster.hasMarks()) {
|
||||||
|
return setMarksOccurrence(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return setMarksOccurrence(false);
|
||||||
|
}, [eventCounts['*']]);
|
||||||
|
|
||||||
|
function autoMark() {
|
||||||
|
for (const cluster of Object.values(getMemory().getClustersForOrigin(origin))) {
|
||||||
|
cluster.autoMark();
|
||||||
|
}
|
||||||
|
return setMarksOccurrence(true);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="toolbar">
|
<div className="toolbar">
|
||||||
<header className="header">
|
<header className="header">
|
||||||
|
@ -204,6 +222,7 @@ const Toolbar = () => {
|
||||||
'width=' + screen.width,
|
'width=' + screen.width,
|
||||||
'fullscreen=yes',
|
'fullscreen=yes',
|
||||||
].join(',');
|
].join(',');
|
||||||
|
autoMark();
|
||||||
window.open(
|
window.open(
|
||||||
`/components/sidebar/sidebar.html?origin=${origin}`,
|
`/components/sidebar/sidebar.html?origin=${origin}`,
|
||||||
'new_window',
|
'new_window',
|
||||||
|
@ -221,6 +240,7 @@ const Toolbar = () => {
|
||||||
'width=' + screen.width,
|
'width=' + screen.width,
|
||||||
'fullscreen=yes',
|
'fullscreen=yes',
|
||||||
].join(',');
|
].join(',');
|
||||||
|
autoMark();
|
||||||
window.open(
|
window.open(
|
||||||
`/components/report-window/report-window.html?origin=${origin}`,
|
`/components/report-window/report-window.html?origin=${origin}`,
|
||||||
'new_window',
|
'new_window',
|
||||||
|
|
12
options.tsx
12
options.tsx
|
@ -1,4 +1,4 @@
|
||||||
import React from 'react';
|
import React, { Fragment } from 'react';
|
||||||
import './options.scss';
|
import './options.scss';
|
||||||
|
|
||||||
export default function Options({
|
export default function Options({
|
||||||
|
@ -12,6 +12,7 @@ export default function Options({
|
||||||
setWarningDataDialogAck,
|
setWarningDataDialogAck,
|
||||||
detailsVisibility,
|
detailsVisibility,
|
||||||
setDetailsVisibility,
|
setDetailsVisibility,
|
||||||
|
setStolenDataView,
|
||||||
}: {
|
}: {
|
||||||
minValueLength: number;
|
minValueLength: number;
|
||||||
setMinValueLength: (n: number) => void;
|
setMinValueLength: (n: number) => void;
|
||||||
|
@ -23,8 +24,16 @@ export default function Options({
|
||||||
setWarningDataDialogAck: (b: boolean) => void;
|
setWarningDataDialogAck: (b: boolean) => void;
|
||||||
detailsVisibility: boolean;
|
detailsVisibility: boolean;
|
||||||
setDetailsVisibility: (b: boolean) => void;
|
setDetailsVisibility: (b: boolean) => void;
|
||||||
|
setStolenDataView: (b: boolean) => void;
|
||||||
}) {
|
}) {
|
||||||
return (
|
return (
|
||||||
|
<Fragment>
|
||||||
|
<nav>
|
||||||
|
<button onClick={() => setStolenDataView(true)}>
|
||||||
|
<img src="/assets/icons/short_left.svg" width="20" height="20" />
|
||||||
|
<span>Wróć do szczegółów</span>
|
||||||
|
</button>
|
||||||
|
</nav>
|
||||||
<div className="options-container">
|
<div className="options-container">
|
||||||
<span>Interfejs</span>
|
<span>Interfejs</span>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
@ -103,5 +112,6 @@ export default function Options({
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
|
</Fragment>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user