Add nav
This commit is contained in:
parent
6ecf2e62b6
commit
268f9a7d06
3
assets/icons/mail.svg
Normal file
3
assets/icons/mail.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M20 20H4C2.89543 20 2 19.1046 2 18V5.913C2.04661 4.84255 2.92853 3.99899 4 4H20C21.1046 4 22 4.89543 22 6V18C22 19.1046 21.1046 20 20 20ZM4 7.868V18H20V7.868L12 13.2L4 7.868ZM4.8 6L12 10.8L19.2 6H4.8Z" fill="#2E3A59"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 331 B |
3
assets/icons/settings.svg
Normal file
3
assets/icons/settings.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M13.8199 22H10.1799C9.71003 22 9.30347 21.673 9.20292 21.214L8.79592 19.33C8.25297 19.0921 7.73814 18.7946 7.26092 18.443L5.42392 19.028C4.97592 19.1709 4.48891 18.9823 4.25392 18.575L2.42992 15.424C2.19751 15.0165 2.27758 14.5025 2.62292 14.185L4.04792 12.885C3.98312 12.2961 3.98312 11.7019 4.04792 11.113L2.62292 9.816C2.27707 9.49837 2.19697 8.98372 2.42992 8.576L4.24992 5.423C4.48491 5.0157 4.97192 4.82714 5.41992 4.97L7.25692 5.555C7.50098 5.37416 7.75505 5.20722 8.01792 5.055C8.27026 4.91269 8.52995 4.78385 8.79592 4.669L9.20392 2.787C9.30399 2.32797 9.71011 2.00049 10.1799 2H13.8199C14.2897 2.00049 14.6958 2.32797 14.7959 2.787L15.2079 4.67C15.4887 4.79352 15.7622 4.93308 16.0269 5.088C16.2739 5.23081 16.5126 5.38739 16.7419 5.557L18.5799 4.972C19.0276 4.82967 19.514 5.01816 19.7489 5.425L21.5689 8.578C21.8013 8.98548 21.7213 9.49951 21.3759 9.817L19.9509 11.117C20.0157 11.7059 20.0157 12.3001 19.9509 12.889L21.3759 14.189C21.7213 14.5065 21.8013 15.0205 21.5689 15.428L19.7489 18.581C19.514 18.9878 19.0276 19.1763 18.5799 19.034L16.7419 18.449C16.5093 18.6203 16.2677 18.7789 16.0179 18.924C15.7557 19.0759 15.4853 19.2131 15.2079 19.335L14.7959 21.214C14.6954 21.6726 14.2894 21.9996 13.8199 22ZM7.61992 16.229L8.43992 16.829C8.62477 16.9652 8.81743 17.0904 9.01692 17.204C9.20462 17.3127 9.39788 17.4115 9.59592 17.5L10.5289 17.909L10.9859 20H13.0159L13.4729 17.908L14.4059 17.499C14.8132 17.3194 15.1998 17.0961 15.5589 16.833L16.3799 16.233L18.4209 16.883L19.4359 15.125L17.8529 13.682L17.9649 12.67C18.0141 12.2274 18.0141 11.7806 17.9649 11.338L17.8529 10.326L19.4369 8.88L18.4209 7.121L16.3799 7.771L15.5589 7.171C15.1997 6.90671 14.8132 6.68175 14.4059 6.5L13.4729 6.091L13.0159 4H10.9859L10.5269 6.092L9.59592 6.5C9.39772 6.58704 9.20444 6.68486 9.01692 6.793C8.81866 6.90633 8.62701 7.03086 8.44292 7.166L7.62192 7.766L5.58192 7.116L4.56492 8.88L6.14792 10.321L6.03592 11.334C5.98672 11.7766 5.98672 12.2234 6.03592 12.666L6.14792 13.678L4.56492 15.121L5.57992 16.879L7.61992 16.229ZM11.9959 16C9.78678 16 7.99592 14.2091 7.99592 12C7.99592 9.79086 9.78678 8 11.9959 8C14.2051 8 15.9959 9.79086 15.9959 12C15.9932 14.208 14.2039 15.9972 11.9959 16ZM11.9959 10C10.9033 10.0011 10.0138 10.8788 9.99815 11.9713C9.98249 13.0638 10.8465 13.9667 11.9386 13.9991C13.0307 14.0315 13.9468 13.1815 13.9959 12.09V12.49V12C13.9959 10.8954 13.1005 10 11.9959 10Z" fill="#2E3A59"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
3
assets/icons/short_left.svg
Normal file
3
assets/icons/short_left.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M7.83 11L11.41 7.41L10 6L4 12L10 18L11.41 16.59L7.83 13H20V11H7.83Z" fill="#2E3A59"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 198 B |
3
assets/icons/trash_full.svg
Normal file
3
assets/icons/trash_full.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M17 22H7C5.89543 22 5 21.1046 5 20V7H3V5H7V4C7 2.89543 7.89543 2 9 2H15C16.1046 2 17 2.89543 17 4V5H21V7H19V20C19 21.1046 18.1046 22 17 22ZM7 7V20H17V7H7ZM9 4V5H15V4H9ZM15 18H13V9H15V18ZM11 18H9V9H11V18Z" fill="#2E3A59"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 334 B |
|
@ -1,11 +1,11 @@
|
||||||
import React from "react";
|
import React from 'react';
|
||||||
import { useState } from "react";
|
import { useState } from 'react';
|
||||||
import { RequestCluster } from "../request-cluster";
|
import { RequestCluster } from '../request-cluster';
|
||||||
import { StolenDataEntry } from "../stolen-data-entry";
|
import { StolenDataEntry } from '../stolen-data-entry';
|
||||||
import { getDate, toBase64 } from "../util";
|
import { getDate, toBase64 } from '../util';
|
||||||
import DomainSummary from "./domain-summary";
|
import DomainSummary from './domain-summary';
|
||||||
|
|
||||||
type PopupState = "not_clicked" | "clicked_but_no_reject_all";
|
type PopupState = 'not_clicked' | 'clicked_but_no_reject_all';
|
||||||
|
|
||||||
export default function EmailTemplate1({
|
export default function EmailTemplate1({
|
||||||
entries,
|
entries,
|
||||||
|
@ -15,9 +15,9 @@ export default function EmailTemplate1({
|
||||||
clusters: Record<string, RequestCluster>;
|
clusters: Record<string, RequestCluster>;
|
||||||
version: number;
|
version: number;
|
||||||
}): JSX.Element {
|
}): JSX.Element {
|
||||||
const [popupState, setPopupState] = useState<PopupState>("not_clicked");
|
const [popupState, setPopupState] = useState<PopupState>('not_clicked');
|
||||||
const [acceptAllName, setAcceptAllName] = useState<string>(
|
const [acceptAllName, setAcceptAllName] = useState<string>(
|
||||||
"Zaakceptuj wszystkie"
|
'Zaakceptuj wszystkie'
|
||||||
);
|
);
|
||||||
const [popupScreenshotBase64, setPopupScreenshotBase64] =
|
const [popupScreenshotBase64, setPopupScreenshotBase64] =
|
||||||
useState<string>(null);
|
useState<string>(null);
|
||||||
|
@ -32,10 +32,11 @@ export default function EmailTemplate1({
|
||||||
>
|
>
|
||||||
<option value="not_clicked">Nic nie kliknięte</option>
|
<option value="not_clicked">Nic nie kliknięte</option>
|
||||||
<option value="clicked_but_no_reject_all">
|
<option value="clicked_but_no_reject_all">
|
||||||
Kliknięte "akceptuj wszystkie", ale nie było opcji "Odrzuć wszystkie"
|
Kliknięte "akceptuj wszystkie", ale nie było opcji "Odrzuć
|
||||||
|
wszystkie"
|
||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
{popupState === "clicked_but_no_reject_all" ? (
|
{popupState === 'clicked_but_no_reject_all' ? (
|
||||||
<>
|
<>
|
||||||
<div>
|
<div>
|
||||||
<label htmlFor="acceptAllName">
|
<label htmlFor="acceptAllName">
|
||||||
|
@ -43,23 +44,26 @@ export default function EmailTemplate1({
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
{...{
|
{...{
|
||||||
type: "text",
|
type: 'text',
|
||||||
value: acceptAllName,
|
value: acceptAllName,
|
||||||
onChange: (e) => setAcceptAllName(e.target.value),
|
onChange: (e) =>
|
||||||
|
setAcceptAllName(e.target.value),
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label htmlFor="popup-screenshot">
|
<label htmlFor="popup-screenshot">
|
||||||
Zrzut ekranu z tego, jak wyglądał popup przed kliknięciem „
|
Zrzut ekranu z tego, jak wyglądał popup przed
|
||||||
{acceptAllName}”:
|
kliknięciem „{acceptAllName}”:
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
{...{
|
{...{
|
||||||
type: "file",
|
type: 'file',
|
||||||
id: "popup-screenshot",
|
id: 'popup-screenshot',
|
||||||
onChange: async (e) => {
|
onChange: async (e) => {
|
||||||
setPopupScreenshotBase64(await toBase64(e.target.files[0]));
|
setPopupScreenshotBase64(
|
||||||
|
await toBase64(e.target.files[0])
|
||||||
|
);
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
@ -67,9 +71,9 @@ export default function EmailTemplate1({
|
||||||
</>
|
</>
|
||||||
) : null}
|
) : null}
|
||||||
<p>
|
<p>
|
||||||
Dzień dobry, w dniu {getDate()} odwiedziłem stronę{" "}
|
Dzień dobry, w dniu {getDate()} odwiedziłem stronę{' '}
|
||||||
{entries[0].request.originalURL}. Strona ta wysłała moje dane osobowe do
|
{entries[0].request.originalURL}. Strona ta wysłała moje dane
|
||||||
podmiotów trzecich - bez mojej zgody.{" "}
|
osobowe do podmiotów trzecich - bez mojej zgody.{' '}
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
{Object.values(clusters)
|
{Object.values(clusters)
|
||||||
|
@ -79,134 +83,147 @@ export default function EmailTemplate1({
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
<p>
|
<p>
|
||||||
{" "}
|
{' '}
|
||||||
Dane te zostały wysłane przez Państwa stronę - a mówiąc dokładniej,
|
Dane te zostały wysłane przez Państwa stronę - a mówiąc
|
||||||
przez zamieszczone przez Państwa na tej stronie skrypty.
|
dokładniej, przez zamieszczone przez Państwa na tej stronie
|
||||||
|
skrypty.
|
||||||
</p>
|
</p>
|
||||||
{popupState === "not_clicked" ? (
|
{popupState === 'not_clicked' ? (
|
||||||
<p>
|
<p>
|
||||||
Nastąpiło to, zanim zdążyłem w ogóle przeczytać treść wyskakującego
|
Nastąpiło to, zanim zdążyłem w ogóle przeczytać treść
|
||||||
okienka ze zgodami i zanim miałem szansę wyrazić sprzeciw takiemu
|
wyskakującego okienka ze zgodami i zanim miałem szansę
|
||||||
przetwarzaniu danych osobowych.
|
wyrazić sprzeciw takiemu przetwarzaniu danych osobowych.
|
||||||
</p>
|
</p>
|
||||||
) : null}
|
) : null}
|
||||||
{popupState === "clicked_but_no_reject_all" ? (
|
{popupState === 'clicked_but_no_reject_all' ? (
|
||||||
<p>
|
<p>
|
||||||
O ile po wejściu na stronę wcisnąłem w wyskakującym okienku przycisk „
|
O ile po wejściu na stronę wcisnąłem w wyskakującym okienku
|
||||||
{acceptAllName}”, o tyle nie stanowi to według mnie ważnej w świetle
|
przycisk „{acceptAllName}”, o tyle nie stanowi to według
|
||||||
RODO zgody, gdyż brakowało w tym okienku równie łatwo osiągalnego
|
mnie ważnej w świetle RODO zgody, gdyż brakowało w tym
|
||||||
przycisku, którego kliknięcie skutkowałoby zasygnalizowaniem braku
|
okienku równie łatwo osiągalnego przycisku, którego
|
||||||
mojej zgody na takie przetwarzanie moich danych. Mówiąc wprost -
|
kliknięcie skutkowałoby zasygnalizowaniem braku mojej zgody
|
||||||
wyrażenie „zgody” było łatwiejsze niż jej niewyrażenie. Niewyrażenie
|
na takie przetwarzanie moich danych. Mówiąc wprost -
|
||||||
zgody wiąże się z negatywną konsekwencją konieczności przechodzenia
|
wyrażenie „zgody” było łatwiejsze niż jej niewyrażenie.
|
||||||
przez dodatkowe kroki w wyskakującym okienku. Zatem tak otrzymana
|
Niewyrażenie zgody wiąże się z negatywną konsekwencją
|
||||||
przez Państwo moja „zgoda” nie jest poprawną podstawą prawną do
|
konieczności przechodzenia przez dodatkowe kroki w
|
||||||
przetwarzania moich danych osobowych, gdyż nie spełnia warunku
|
wyskakującym okienku. Zatem tak otrzymana przez Państwo moja
|
||||||
dobrowolności wspomnianego w Art. 4. pkt 11{" "}
|
„zgoda” nie jest poprawną podstawą prawną do przetwarzania
|
||||||
|
moich danych osobowych, gdyż nie spełnia warunku
|
||||||
|
dobrowolności wspomnianego w Art. 4. pkt 11{' '}
|
||||||
<em>
|
<em>
|
||||||
rozporządzenia Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia
|
rozporządzenia Parlamentu Europejskiego i Rady (UE)
|
||||||
27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z
|
2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony
|
||||||
przetwarzaniem danych osobowych i w sprawie swobodnego przepływu
|
osób fizycznych w związku z przetwarzaniem danych
|
||||||
takich danych oraz uchylenia dyrektywy 95/46/WE
|
osobowych i w sprawie swobodnego przepływu takich danych
|
||||||
|
oraz uchylenia dyrektywy 95/46/WE
|
||||||
</em>
|
</em>
|
||||||
.{<img {...{ src: popupScreenshotBase64 }} />}
|
.{<img {...{ src: popupScreenshotBase64 }} />}
|
||||||
</p>
|
</p>
|
||||||
) : null}
|
) : null}
|
||||||
<p>
|
<p>
|
||||||
Udokumentowałem to na zrzutach ekranu z mojej przeglądarki internetowej,
|
Udokumentowałem to na zrzutach ekranu z mojej przeglądarki
|
||||||
które to zrzuty przesyłam w załączeniu.
|
internetowej, które to zrzuty przesyłam w załączeniu.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Wiem, że nie wszystkie rodzaje przetwarzania danych wymagają zgody
|
Wiem, że nie wszystkie rodzaje przetwarzania danych wymagają
|
||||||
użytkownika. W kontekście stron internetowych z wymienionych w Art. 6.
|
zgody użytkownika. W kontekście stron internetowych z
|
||||||
pkt 1. RODO mogą mieć zastosowanie albo „zgoda” (Art. 6. pkt 1. lit.
|
wymienionych w Art. 6. pkt 1. RODO mogą mieć zastosowanie albo
|
||||||
a)), albo niezbędność tego przetwarzania do wykonania umowy (Art. 6. pkt
|
„zgoda” (Art. 6. pkt 1. lit. a)), albo niezbędność tego
|
||||||
1. lit. b)), albo uzasadniony interes (Art. 6. pkt 1. lit. f)). Wiem
|
przetwarzania do wykonania umowy (Art. 6. pkt 1. lit. b)), albo
|
||||||
też, że każda z tych podstaw prawnych ma moc dopiero po spełnieniu
|
uzasadniony interes (Art. 6. pkt 1. lit. f)). Wiem też, że każda
|
||||||
określonych warunków.
|
z tych podstaw prawnych ma moc dopiero po spełnieniu określonych
|
||||||
|
warunków.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Nie widzę ważnej podstawy prawnej legalizującej procesy przetwarzania
|
Nie widzę ważnej podstawy prawnej legalizującej procesy
|
||||||
moich danych osobowych, jakie wymieniłem powyżej (na pewno nie jest to
|
przetwarzania moich danych osobowych, jakie wymieniłem powyżej
|
||||||
przetwarzanie konieczne do wyświetlenia strony z technicznego punktu
|
(na pewno nie jest to przetwarzanie konieczne do wyświetlenia
|
||||||
widzenia). Jeżeli takie przesłanki legalizujące jednak występują, proszę
|
strony z technicznego punktu widzenia). Jeżeli takie przesłanki
|
||||||
o ich wskazanie,
|
legalizujące jednak występują, proszę o ich wskazanie,
|
||||||
<strong>
|
<strong>
|
||||||
{" "}
|
{' '}
|
||||||
dla każdego z celów i podmiotów z <em>osobna</em>
|
dla każdego z celów i podmiotów z <em>osobna</em>
|
||||||
</strong>
|
</strong>
|
||||||
.
|
.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Jeżeli wskazaną przez Państwa przesłanką legalizującą dany element
|
Jeżeli wskazaną przez Państwa przesłanką legalizującą dany
|
||||||
procesu przetwarzania danych osobowych przez Państwa stronę jest Art 6.
|
element procesu przetwarzania danych osobowych przez Państwa
|
||||||
pkt 1 lit. a) RODO (zgoda), na mocy Art. 7 pkt 1 RODO proszę o
|
stronę jest Art 6. pkt 1 lit. a) RODO (zgoda), na mocy Art. 7
|
||||||
wykazanie, że udzieliłem Państwu zgodę na takie przetwarzanie moich
|
pkt 1 RODO proszę o wykazanie, że udzieliłem Państwu zgodę na
|
||||||
danych osobowych zanim to przetwarzanie nastąpiło, oraz że ta zgoda jest
|
takie przetwarzanie moich danych osobowych zanim to
|
||||||
ważna w świetle RODO (odnosząc się w szczególności do art. 7 ust. 3
|
przetwarzanie nastąpiło, oraz że ta zgoda jest ważna w świetle
|
||||||
RODO). Z góry zaznaczam, że „ustawienia przeglądarki” nie stanowią
|
RODO (odnosząc się w szczególności do art. 7 ust. 3 RODO). Z
|
||||||
ważnej w świetle RODO zgody.
|
góry zaznaczam, że „ustawienia przeglądarki” nie stanowią ważnej
|
||||||
|
w świetle RODO zgody.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Jeżeli wskazaną przez Państwa przesłanką legalizującą dany element
|
Jeżeli wskazaną przez Państwa przesłanką legalizującą dany
|
||||||
procesu przetwarzania danych osobowych przez Państwa stronę jest Art 6.
|
element procesu przetwarzania danych osobowych przez Państwa
|
||||||
pkt 1 lit. b) RODO (niezbędność takiego przetwarzania do wykonania
|
stronę jest Art 6. pkt 1 lit. b) RODO (niezbędność takiego
|
||||||
umowy), proszę o wskazanie, w jaki sposób ta konieczność zachodzi, oraz
|
przetwarzania do wykonania umowy), proszę o wskazanie, w jaki
|
||||||
co sprawia, że Państwa zdaniem nie można wykonać umowy związanej z
|
sposób ta konieczność zachodzi, oraz co sprawia, że Państwa
|
||||||
wyświetleniem Państwa strony bez przekazywania identyfikatora
|
zdaniem nie można wykonać umowy związanej z wyświetleniem
|
||||||
internetowego z plików Cookies lub historii przeglądania w nagłówku
|
Państwa strony bez przekazywania identyfikatora internetowego z
|
||||||
Referer do wskazanych podmiotów trzecich.
|
plików Cookies lub historii przeglądania w nagłówku Referer do
|
||||||
|
wskazanych podmiotów trzecich.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Jeżeli wskazaną przez Państwa przesłanką legalizującą dany element
|
Jeżeli wskazaną przez Państwa przesłanką legalizującą dany
|
||||||
procesu przetwarzania danych osobowych przez Państwa stronę jest Art 6.
|
element procesu przetwarzania danych osobowych przez Państwa
|
||||||
pkt 1 lit. f) RODO (uzasadniony interes), proszę o wskazanie, jaki to
|
stronę jest Art 6. pkt 1 lit. f) RODO (uzasadniony interes),
|
||||||
jest <strong>konkretny interes</strong> (prosze o bardziej dokładny opis
|
proszę o wskazanie, jaki to jest{' '}
|
||||||
niż np. tylko "marketing"), oraz o wynik testu równowagi pomiędzy
|
<strong>konkretny interes</strong> (prosze o bardziej dokładny
|
||||||
Państwa interesem a moimi podstawowymi wolnościami i prawami - ze
|
opis niż np. tylko "marketing"), oraz o wynik testu równowagi
|
||||||
wskazaniem tego, co sprawia, że w Państwa ocenie Państwa uzasadniony
|
pomiędzy Państwa interesem a moimi podstawowymi wolnościami i
|
||||||
interes przeważa moje prawa i interesy w kontekście wspomnianych powyżej
|
prawami - ze wskazaniem tego, co sprawia, że w Państwa ocenie
|
||||||
procesów przetwarzania danych. Proszę też pamiętać, że aby w ramach
|
Państwa uzasadniony interes przeważa moje prawa i interesy w
|
||||||
danego celu przetwarzania powołać się na prawnie uzasadniony interes,
|
kontekście wspomnianych powyżej procesów przetwarzania danych.
|
||||||
powinni mi Państo umożliwić wyrażenie sprzeciwu wobec przetwarzania
|
Proszę też pamiętać, że aby w ramach danego celu przetwarzania
|
||||||
moich danych w tym celu <em>przed</em> rozpoczęciem przetwarzania - zob.{" "}
|
powołać się na prawnie uzasadniony interes, powinni mi Państo
|
||||||
|
umożliwić wyrażenie sprzeciwu wobec przetwarzania moich danych w
|
||||||
|
tym celu <em>przed</em> rozpoczęciem przetwarzania - zob.{' '}
|
||||||
<a href="https://edpb.europa.eu/system/files/2021-11/edpb_guidelines_082020_on_the_targeting_of_social_media_users_pl_0.pdf">
|
<a href="https://edpb.europa.eu/system/files/2021-11/edpb_guidelines_082020_on_the_targeting_of_social_media_users_pl_0.pdf">
|
||||||
Wytyczne 8/2020 Europejskiej Rady Ochrony Danych dotyczące
|
Wytyczne 8/2020 Europejskiej Rady Ochrony Danych dotyczące
|
||||||
targetowania użytkowników mediów społecznościowych
|
targetowania użytkowników mediów społecznościowych
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Niniejszym zwracam się także z żądaniem ujawnienia tożsamości podmiotów,
|
Niniejszym zwracam się także z żądaniem ujawnienia tożsamości
|
||||||
które są właścicielami wyżej wymienionych domen, abym mógł zapoznać się
|
podmiotów, które są właścicielami wyżej wymienionych domen, abym
|
||||||
z ich politykami prywatności i zwrócić się do tych podmiotów o usunięcie
|
mógł zapoznać się z ich politykami prywatności i zwrócić się do
|
||||||
z ich baz wysłanych przez Państwa stronę moich danych.
|
tych podmiotów o usunięcie z ich baz wysłanych przez Państwa
|
||||||
|
stronę moich danych.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Proszę też o wysłanie kopii danych zebranych na mój temat i wysłanych do
|
Proszę też o wysłanie kopii danych zebranych na mój temat i
|
||||||
wyżej wymienionych podmiotów.
|
wysłanych do wyżej wymienionych podmiotów.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
W odpowiedzi proszę się nie powoływać na IAB Europe i ich rzekomą renomę
|
W odpowiedzi proszę się nie powoływać na IAB Europe i ich
|
||||||
w tworzeniu rozwiązań zgodnych z RODO. IAB chroni interes reklamodawców,
|
rzekomą renomę w tworzeniu rozwiązań zgodnych z RODO. IAB chroni
|
||||||
a nie Użytkowników, i ich rozwiązania (np. TCF) są{" "}
|
interes reklamodawców, a nie Użytkowników, i ich rozwiązania
|
||||||
|
(np. TCF) są{' '}
|
||||||
<a href="https://panoptykon.org/search/site/IAB">
|
<a href="https://panoptykon.org/search/site/IAB">
|
||||||
notorycznie niezgodne z RODO i pozbawione szacunku dla Użytkowników
|
notorycznie niezgodne z RODO i pozbawione szacunku dla
|
||||||
|
Użytkowników
|
||||||
</a>
|
</a>
|
||||||
.
|
.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Apeluję także o wprowadzenie stosownych zmian na stronie tak, aby nie
|
Apeluję także o wprowadzenie stosownych zmian na stronie tak,
|
||||||
pozostawiać cienia wątpliwości odnośnie tego, na mocy jakiej przesłanki
|
aby nie pozostawiać cienia wątpliwości odnośnie tego, na mocy
|
||||||
legalizującej dane są przetwarzane przez wspomniane podmioty trzecie,
|
jakiej przesłanki legalizującej dane są przetwarzane przez
|
||||||
lub tak, aby te dane po prostu nie były wysyłane. Pomoże to zachować
|
wspomniane podmioty trzecie, lub tak, aby te dane po prostu nie
|
||||||
prywatność innym użytkownikom Państwa strony. Polecam Państwa uwadze
|
były wysyłane. Pomoże to zachować prywatność innym użytkownikom
|
||||||
oficjalne wytyczne EROD dotyczące zgody w kontekście RODO:
|
Państwa strony. Polecam Państwa uwadze oficjalne wytyczne EROD
|
||||||
|
dotyczące zgody w kontekście RODO:
|
||||||
https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf
|
https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf
|
||||||
). Aby na przykład zapobiec automatycznemu wysyłaniu historii
|
). Aby na przykład zapobiec automatycznemu wysyłaniu historii
|
||||||
przeglądania do podmiotów trzecich przez Państwa stronę, można po prostu
|
przeglądania do podmiotów trzecich przez Państwa stronę, można
|
||||||
ustawić odpowiednio treść nagłówka{" "}
|
po prostu ustawić odpowiednio treść nagłówka{' '}
|
||||||
<a href="https://developer.mozilla.org/pl/docs/Web/HTTP/Headers/Referrer-Policy">
|
<a href="https://developer.mozilla.org/pl/docs/Web/HTTP/Headers/Referrer-Policy">
|
||||||
Referrer-Policy{" "}
|
Referrer-Policy{' '}
|
||||||
</a>
|
</a>
|
||||||
.
|
.
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import React from "react";
|
import React from 'react';
|
||||||
import { Dispatch, SetStateAction } from "react";
|
import { Dispatch, SetStateAction } from 'react';
|
||||||
import { toBase64 } from "../util";
|
import { toBase64 } from '../util';
|
||||||
import { EmailTemplate2Config } from "./email-template-2";
|
import { EmailTemplate2Config } from './email-template-2';
|
||||||
|
|
||||||
export default function EmailTemplate2Controls({
|
export default function EmailTemplate2Controls({
|
||||||
config,
|
config,
|
||||||
|
@ -13,14 +13,15 @@ export default function EmailTemplate2Controls({
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div>
|
||||||
<label htmlFor="poup_type">Typ okienka o RODO:</label>
|
<label htmlFor="poup_type">Typ okienka o RODO: </label>
|
||||||
<select
|
<select
|
||||||
id="poup_type"
|
id="poup_type"
|
||||||
value={config.popup_type}
|
value={config.popup_type}
|
||||||
onChange={(e) =>
|
onChange={(e) =>
|
||||||
setConfig((v) => ({
|
setConfig((v) => ({
|
||||||
...v,
|
...v,
|
||||||
popup_type: e.target.value as EmailTemplate2Config["popup_type"],
|
popup_type: e.target
|
||||||
|
.value as EmailTemplate2Config['popup_type'],
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
@ -31,13 +32,15 @@ export default function EmailTemplate2Controls({
|
||||||
<option value="consent">Okienko z pytaniem o zgodę</option>
|
<option value="consent">Okienko z pytaniem o zgodę</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
{config.popup_type !== "none" ? (
|
{config.popup_type !== 'none' ? (
|
||||||
<div>
|
<div>
|
||||||
<label htmlFor="popup_screenshot">Zrzut ekranu okienka o RODO:</label>
|
<label htmlFor="popup_screenshot">
|
||||||
|
Zrzut ekranu okienka o RODO:
|
||||||
|
</label>
|
||||||
<input
|
<input
|
||||||
{...{
|
{...{
|
||||||
type: "file",
|
type: 'file',
|
||||||
id: "popup_screenshot",
|
id: 'popup_screenshot',
|
||||||
onChange: async (e) => {
|
onChange: async (e) => {
|
||||||
const popup_screenshot_base64 = await toBase64(
|
const popup_screenshot_base64 = await toBase64(
|
||||||
e.target.files[0]
|
e.target.files[0]
|
||||||
|
@ -51,16 +54,16 @@ export default function EmailTemplate2Controls({
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
""
|
''
|
||||||
)}
|
)}
|
||||||
{config.popup_type === "consent" ? (
|
{config.popup_type === 'consent' ? (
|
||||||
<div>
|
<div>
|
||||||
<label htmlFor="acceptAllName">
|
<label htmlFor="acceptAllName">
|
||||||
Tekst na przycisku do zatwierdzania wszystkich zgód:
|
Tekst na przycisku do zatwierdzania wszystkich zgód:
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
{...{
|
{...{
|
||||||
type: "text",
|
type: 'text',
|
||||||
value: config.popup_accept_all_text,
|
value: config.popup_accept_all_text,
|
||||||
onChange: (e) =>
|
onChange: (e) =>
|
||||||
setConfig((v) => ({
|
setConfig((v) => ({
|
||||||
|
@ -71,7 +74,7 @@ export default function EmailTemplate2Controls({
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
""
|
''
|
||||||
)}
|
)}
|
||||||
<div>
|
<div>
|
||||||
<label htmlFor="popup_action">
|
<label htmlFor="popup_action">
|
||||||
|
@ -84,7 +87,7 @@ export default function EmailTemplate2Controls({
|
||||||
setConfig((v) => ({
|
setConfig((v) => ({
|
||||||
...v,
|
...v,
|
||||||
popup_action: e.target
|
popup_action: e.target
|
||||||
.value as EmailTemplate2Config["popup_action"],
|
.value as EmailTemplate2Config['popup_action'],
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
@ -97,7 +100,7 @@ export default function EmailTemplate2Controls({
|
||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
{config.popup_action === "closed" ? (
|
{config.popup_action === 'closed' ? (
|
||||||
<div>
|
<div>
|
||||||
<label htmlFor="popup_closed_how">
|
<label htmlFor="popup_closed_how">
|
||||||
Jak okienko zostało zamknięte? Poprzez
|
Jak okienko zostało zamknięte? Poprzez
|
||||||
|
@ -107,16 +110,19 @@ export default function EmailTemplate2Controls({
|
||||||
type="text"
|
type="text"
|
||||||
placeholder="kliknięcie przycisku „X”"
|
placeholder="kliknięcie przycisku „X”"
|
||||||
value={config.popup_closed_how}
|
value={config.popup_closed_how}
|
||||||
style={{ width: "300px" }}
|
style={{ width: '300px' }}
|
||||||
onChange={(e) =>
|
onChange={(e) =>
|
||||||
setConfig((v) => ({ ...v, popup_closed_how: e.target.value }))
|
setConfig((v) => ({
|
||||||
|
...v,
|
||||||
|
popup_closed_how: e.target.value,
|
||||||
|
}))
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
""
|
''
|
||||||
)}
|
)}
|
||||||
{config.popup_type !== "none" ? (
|
{config.popup_type !== 'none' ? (
|
||||||
<div>
|
<div>
|
||||||
<input
|
<input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
|
@ -125,23 +131,24 @@ export default function EmailTemplate2Controls({
|
||||||
onChange={(e) =>
|
onChange={(e) =>
|
||||||
setConfig((v) => ({
|
setConfig((v) => ({
|
||||||
...v,
|
...v,
|
||||||
popup_mentions_passive_consent: e.target.checked,
|
popup_mentions_passive_consent:
|
||||||
|
e.target.checked,
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<label htmlFor="popup_mentions_passive_consent">
|
<label htmlFor="popup_mentions_passive_consent">
|
||||||
okienko wspomina o pasywnej zgodzie (np. „korzystając ze strony
|
okienko wspomina o pasywnej zgodzie (np. „korzystając ze
|
||||||
wyrażasz zgodę”)
|
strony wyrażasz zgodę”)
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
""
|
''
|
||||||
)}
|
)}
|
||||||
{config.popup_mentions_passive_consent ? (
|
{config.popup_mentions_passive_consent ? (
|
||||||
<div>
|
<div>
|
||||||
<label htmlFor="popup_passive_consent_text">
|
<label htmlFor="popup_passive_consent_text">
|
||||||
Jak okienko próbuje wmówić Ci, że wyrażasz zgodę? Przeklej z treści
|
Jak okienko próbuje wmówić Ci, że wyrażasz zgodę?
|
||||||
okienka:
|
Przeklej z treści okienka:
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
id="popup_passive_consent_text"
|
id="popup_passive_consent_text"
|
||||||
|
@ -156,7 +163,7 @@ export default function EmailTemplate2Controls({
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
""
|
''
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
@ -92,22 +92,33 @@ export default function EmailTemplate2({
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<EmailTemplate2Controls {...{ config, setConfig }} />
|
<EmailTemplate2Controls {...{ config, setConfig }} />
|
||||||
|
<article
|
||||||
|
style={{
|
||||||
|
boxShadow: '0 20px 40px rgba(0,0,0,.2)',
|
||||||
|
padding: '4rem 3rem',
|
||||||
|
borderRadius: '0.25rem',
|
||||||
|
margin: '2rem 0',
|
||||||
|
color: 'hsl(240, 5.7%, 15.8%);',
|
||||||
|
}}
|
||||||
|
>
|
||||||
<p>
|
<p>
|
||||||
Dzień dobry, w dniu {getDate()} odwiedziłem stronę {visited_url}
|
Dzień dobry, w dniu {getDate()} odwiedziłem stronę{' '}
|
||||||
.
|
{visited_url}.
|
||||||
</p>
|
</p>
|
||||||
{config.popup_type === 'none' ? (
|
{config.popup_type === 'none' ? (
|
||||||
<p>
|
<p>
|
||||||
Nie ukazał mi się na stronie żaden mechanizm pozyskujący
|
Nie ukazał mi się na stronie żaden mechanizm pozyskujący
|
||||||
zgodę na przetwarzanie moich danych osobowych lub
|
zgodę na przetwarzanie moich danych osobowych lub
|
||||||
umożliwiający mi wyrażenie sprzeciwu wobec przetwarzania
|
umożliwiający mi wyrażenie sprzeciwu wobec przetwarzania
|
||||||
przez stronę moich danych osobowych w zakresie wykraczającym
|
przez stronę moich danych osobowych w zakresie
|
||||||
poza procesy konieczne do wyświetlenia strony
|
wykraczającym poza procesy konieczne do wyświetlenia
|
||||||
|
strony
|
||||||
</p>
|
</p>
|
||||||
) : config.popup_type == 'passive_cookie_banner' ? (
|
) : config.popup_type == 'passive_cookie_banner' ? (
|
||||||
<>
|
<>
|
||||||
<p>
|
<p>
|
||||||
Na stronie była widoczna informacja o plikach Cookie.{' '}
|
Na stronie była widoczna informacja o plikach
|
||||||
|
Cookie.{' '}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<Base64Image
|
<Base64Image
|
||||||
|
@ -119,8 +130,8 @@ export default function EmailTemplate2({
|
||||||
<>
|
<>
|
||||||
<p>
|
<p>
|
||||||
Ukazało mi się okienko z informacjami i pytaniami
|
Ukazało mi się okienko z informacjami i pytaniami
|
||||||
dotyczącymi sposobów, w jaki strona przetwarza moje dane
|
dotyczącymi sposobów, w jaki strona przetwarza moje
|
||||||
osobowe.{' '}
|
dane osobowe.{' '}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<Base64Image
|
<Base64Image
|
||||||
|
@ -129,9 +140,9 @@ export default function EmailTemplate2({
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
{config.popup_action === 'ignored'
|
{config.popup_action === 'ignored'
|
||||||
? /* HTML */ `Nie kliknąłem żadnego przycisku w tym
|
? /* HTML */ `Nie kliknąłem żadnego przycisku w
|
||||||
okienku. W szczególności nie kliknąłem przycisku
|
tym okienku. W szczególności nie kliknąłem
|
||||||
„${config.popup_accept_all_text}”.`
|
przycisku „${config.popup_accept_all_text}”.`
|
||||||
: config.popup_action === 'accepted'
|
: config.popup_action === 'accepted'
|
||||||
? `Kliknąłem na widoczną w tym okienku opcję „${config.popup_accept_all_text}”.`
|
? `Kliknąłem na widoczną w tym okienku opcję „${config.popup_accept_all_text}”.`
|
||||||
: ''}
|
: ''}
|
||||||
|
@ -139,10 +150,10 @@ export default function EmailTemplate2({
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
<p>
|
<p>
|
||||||
W tym samym czasie rejestrowałem ruch sieciowy generowany przez
|
W tym samym czasie rejestrowałem ruch sieciowy generowany
|
||||||
tę stronę za pomocą narzędzi w przeglądarce Firefox. Okazało
|
przez tę stronę za pomocą narzędzi w przeglądarce Firefox.
|
||||||
się, że Państwa strona wysłała była moje dane osobowe do
|
Okazało się, że Państwa strona wysłała była moje dane
|
||||||
następujących podmiotów:
|
osobowe do następujących podmiotów:
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
{Object.values(clusters)
|
{Object.values(clusters)
|
||||||
|
@ -153,8 +164,8 @@ export default function EmailTemplate2({
|
||||||
</ul>
|
</ul>
|
||||||
{config.popup_action === 'ignored' ? (
|
{config.popup_action === 'ignored' ? (
|
||||||
<p>
|
<p>
|
||||||
Dane te zostały wysłane, zanim kliknąłem cokolwiek na tej
|
Dane te zostały wysłane, zanim kliknąłem cokolwiek na
|
||||||
stronie.
|
tej stronie.
|
||||||
</p>
|
</p>
|
||||||
) : config.popup_action === 'accepted' ? (
|
) : config.popup_action === 'accepted' ? (
|
||||||
<p>
|
<p>
|
||||||
|
@ -165,53 +176,56 @@ export default function EmailTemplate2({
|
||||||
''
|
''
|
||||||
)}
|
)}
|
||||||
<p>
|
<p>
|
||||||
W załączeniu przesyłam część zrzutów ekranu dokumentujących fakt
|
W załączeniu przesyłam część zrzutów ekranu dokumentujących
|
||||||
wysłania tych danych przez Państwa stronę.{' '}
|
fakt wysłania tych danych przez Państwa stronę.{' '}
|
||||||
</p>
|
</p>
|
||||||
<h3>Podstawa prawna</h3>
|
<h3>Podstawa prawna</h3>
|
||||||
<p>
|
<p>
|
||||||
Ustawa Prawo Telekomunikacyjne w art. 173 reguluje warunki,
|
Ustawa Prawo Telekomunikacyjne w art. 173 reguluje warunki,
|
||||||
które musi spełnić administrator strony, aby jego strona mogła
|
które musi spełnić administrator strony, aby jego strona
|
||||||
zapisywać i czytać treść plików cookie. Nie reguluje jednak
|
mogła zapisywać i czytać treść plików cookie. Nie reguluje
|
||||||
tego, jakim podmiotom i w jakim zakresie dane mogą być{' '}
|
jednak tego, jakim podmiotom i w jakim zakresie dane mogą
|
||||||
<em>ujawniane</em> przez stronę. Tym zajmuje się Rozporządzenie
|
być <em>ujawniane</em> przez stronę. Tym zajmuje się
|
||||||
2016/679 Parlamentu Europejskiego i Rady (UE) z dnia 27 kwietnia
|
Rozporządzenie 2016/679 Parlamentu Europejskiego i Rady (UE)
|
||||||
2016 r. w sprawie ochrony osób fizycznych w związku z
|
z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych
|
||||||
przetwarzaniem danych osobowych i w sprawie swobodnego przepływu
|
w związku z przetwarzaniem danych osobowych i w sprawie
|
||||||
takich danych oraz uchylenia dyrektywy 95/46/WE (ogólne
|
swobodnego przepływu takich danych oraz uchylenia dyrektywy
|
||||||
rozporządzenie o ochronie danych) – RODO. Zapis/odczyt plików
|
95/46/WE (ogólne rozporządzenie o ochronie danych) – RODO.
|
||||||
cookie a ujawnianie ich treści podmiotom trzecim to dwa różne
|
Zapis/odczyt plików cookie a ujawnianie ich treści podmiotom
|
||||||
procesy. Niniejsza wiadomość i pytania w niej zawarte dotyczą
|
trzecim to dwa różne procesy. Niniejsza wiadomość i pytania
|
||||||
właśnie <em>ujawniania</em> moich danych osobowych (pochodzących
|
w niej zawarte dotyczą właśnie <em>ujawniania</em> moich
|
||||||
m.in. z Cookies) podmiotom trzecim.
|
danych osobowych (pochodzących m.in. z Cookies) podmiotom
|
||||||
|
trzecim.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
W kontekście stron internetowych są właściwie dopuszczalne tylko
|
W kontekście stron internetowych są właściwie dopuszczalne
|
||||||
trzy z sześciu wymienionych w Art. 6 pkt 1 RODO podstaw prawnych
|
tylko trzy z sześciu wymienionych w Art. 6 pkt 1 RODO
|
||||||
dla przetwarzania danych osobowych:
|
podstaw prawnych dla przetwarzania danych osobowych:
|
||||||
</p>
|
</p>
|
||||||
<ol>
|
<ol>
|
||||||
<li>
|
<li>
|
||||||
„Zgoda” — osoba, której dane dotyczą wyraziła zgodę na
|
„Zgoda” — osoba, której dane dotyczą wyraziła
|
||||||
przetwarzanie swoich danych osobowych w jednym lub większej
|
zgodę na przetwarzanie swoich danych osobowych w jednym
|
||||||
liczbie określonych celów (<em>Art. 6 pkt 1 lit. a)</em>).
|
lub większej liczbie określonych celów (
|
||||||
|
<em>Art. 6 pkt 1 lit. a)</em>).
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
„Niezbędność” — przetwarzanie jest niezbędne do
|
„Niezbędność” — przetwarzanie jest niezbędne do
|
||||||
wykonania umowy, której stroną jest osoba, której dane
|
wykonania umowy, której stroną jest osoba, której dane
|
||||||
dotyczą, lub do podjęcia działań na żądanie osoby, której
|
dotyczą, lub do podjęcia działań na żądanie osoby,
|
||||||
dane dotyczą, przed zawarciem umowy (
|
której dane dotyczą, przed zawarciem umowy (
|
||||||
<em>Art. 6 pkt 1 lit. b)</em>);{' '}
|
<em>Art. 6 pkt 1 lit. b)</em>);{' '}
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
„Uzasadniony Interes” — przetwarzanie jest niezbędne
|
„Uzasadniony Interes” — przetwarzanie jest
|
||||||
do celów wynikających z prawnie uzasadnionych interesów
|
niezbędne do celów wynikających z prawnie uzasadnionych
|
||||||
realizowanych przez administratora lub przez stronę trzecią,
|
interesów realizowanych przez administratora lub przez
|
||||||
z wyjątkiem sytuacji, w których nadrzędny charakter wobec
|
stronę trzecią, z wyjątkiem sytuacji, w których
|
||||||
tych interesów mają interesy lub podstawowe prawa i wolności
|
nadrzędny charakter wobec tych interesów mają interesy
|
||||||
osoby, której dane dotyczą, wymagające ochrony danych
|
lub podstawowe prawa i wolności osoby, której dane
|
||||||
osobowych, w szczególności gdy osoba, której dane dotyczą,
|
dotyczą, wymagające ochrony danych osobowych, w
|
||||||
jest dzieckiem (<em>Art. 6 pkt 1 lit. f)</em>
|
szczególności gdy osoba, której dane dotyczą, jest
|
||||||
|
dzieckiem (<em>Art. 6 pkt 1 lit. f)</em>
|
||||||
);
|
);
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
@ -220,12 +234,12 @@ export default function EmailTemplate2({
|
||||||
stronie nie ma zastosowania „Zgoda”, gdyż{' '}
|
stronie nie ma zastosowania „Zgoda”, gdyż{' '}
|
||||||
{config.popup_action === 'ignored' ? (
|
{config.popup_action === 'ignored' ? (
|
||||||
<>
|
<>
|
||||||
nie wyrażałem żadnej zgody na takie przetwarzanie moich
|
nie wyrażałem żadnej zgody na takie przetwarzanie
|
||||||
danych
|
moich danych
|
||||||
{config.popup_type === 'consent' ? (
|
{config.popup_type === 'consent' ? (
|
||||||
<>
|
<>
|
||||||
— w szczególności nie kliknąłem przycisku
|
— w szczególności nie kliknąłem
|
||||||
„{config.popup_accept_all_text}”
|
przycisku „{config.popup_accept_all_text}”
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
''
|
''
|
||||||
|
@ -236,18 +250,19 @@ export default function EmailTemplate2({
|
||||||
<>
|
<>
|
||||||
o ile po wejściu na stronę wcisnąłem w wyskakującym
|
o ile po wejściu na stronę wcisnąłem w wyskakującym
|
||||||
okienku przycisk „{config.popup_accept_all_text}”, o
|
okienku przycisk „{config.popup_accept_all_text}”, o
|
||||||
tyle nie stanowi to według mnie ważnej w świetle RODO
|
tyle nie stanowi to według mnie ważnej w świetle
|
||||||
zgody, gdyż brakowało w tym okienku równie łatwo
|
RODO zgody, gdyż brakowało w tym okienku równie
|
||||||
osiągalnego przycisku, którego kliknięcie skutkowałoby
|
łatwo osiągalnego przycisku, którego kliknięcie
|
||||||
zasygnalizowaniem braku mojej zgody na takie
|
skutkowałoby zasygnalizowaniem braku mojej zgody na
|
||||||
przetwarzanie moich danych. Mówiąc wprost —
|
takie przetwarzanie moich danych. Mówiąc wprost
|
||||||
wyrażenie „zgody” było łatwiejsze niż jej niewyrażenie.
|
— wyrażenie „zgody” było łatwiejsze niż jej
|
||||||
Niewyrażenie zgody wiąże się z negatywną konsekwencją
|
niewyrażenie. Niewyrażenie zgody wiąże się z
|
||||||
konieczności przechodzenia przez dodatkowe kroki w
|
negatywną konsekwencją konieczności przechodzenia
|
||||||
wyskakującym okienku. Zatem tak otrzymana przez Państwo
|
przez dodatkowe kroki w wyskakującym okienku. Zatem
|
||||||
moja „zgoda” nie jest poprawną podstawą prawną do
|
tak otrzymana przez Państwo moja „zgoda” nie jest
|
||||||
przetwarzania moich danych osobowych, gdyż nie spełnia
|
poprawną podstawą prawną do przetwarzania moich
|
||||||
warunku dobrowolności wspomnianego w motywie (42) RODO.
|
danych osobowych, gdyż nie spełnia warunku
|
||||||
|
dobrowolności wspomnianego w motywie (42) RODO.
|
||||||
</>
|
</>
|
||||||
) : config.popup_action === 'closed' ? (
|
) : config.popup_action === 'closed' ? (
|
||||||
<>
|
<>
|
||||||
|
@ -261,15 +276,16 @@ export default function EmailTemplate2({
|
||||||
)}{' '}
|
)}{' '}
|
||||||
Za zgodę nie można też uznać posiadania włączonej obsługi
|
Za zgodę nie można też uznać posiadania włączonej obsługi
|
||||||
cookies w przeglądarce (gdyż aby zgoda była ważna, musi być
|
cookies w przeglądarce (gdyż aby zgoda była ważna, musi być
|
||||||
szczegółowa dla każdego celów z osobna), jakichkolwiek innych
|
szczegółowa dla każdego celów z osobna), jakichkolwiek
|
||||||
ustawień przeglądarki, ani pasywnych działań z mojej strony (np.
|
innych ustawień przeglądarki, ani pasywnych działań z mojej
|
||||||
„kontynuowanie korzystania ze strony”)
|
strony (np. „kontynuowanie korzystania ze strony”)
|
||||||
{config.popup_mentions_passive_consent ? (
|
{config.popup_mentions_passive_consent ? (
|
||||||
<>
|
<>
|
||||||
{' '}
|
{' '}
|
||||||
— nieprawdą więc jest zawarty na Państwa stronie
|
— nieprawdą więc jest zawarty na Państwa
|
||||||
komunikat „{config.popup_passive_consent_text.trim()}”
|
stronie komunikat „
|
||||||
(por. paragraf 97.{' '}
|
{config.popup_passive_consent_text.trim()}” (por.
|
||||||
|
paragraf 97.{' '}
|
||||||
<a href="https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf">
|
<a href="https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf">
|
||||||
oficjalnych wytycznych EROD dotyczących zgody na
|
oficjalnych wytycznych EROD dotyczących zgody na
|
||||||
mocy rozporządzenia 2016/679
|
mocy rozporządzenia 2016/679
|
||||||
|
@ -282,11 +298,12 @@ export default function EmailTemplate2({
|
||||||
.
|
.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
W mojej ocenie „Niezbędność“ nie ma zastosowania co do opisanych
|
W mojej ocenie „Niezbędność“ nie ma zastosowania co do
|
||||||
powyżej sposobów przetwarzania danych. Nie widzę, co miałoby
|
opisanych powyżej sposobów przetwarzania danych. Nie widzę,
|
||||||
sprawiać, aby wysyłanie moich danych osobowych do wspomnianych
|
co miałoby sprawiać, aby wysyłanie moich danych osobowych do
|
||||||
powyżej podmiotów trzecich było konieczne do wyświetlenia
|
wspomnianych powyżej podmiotów trzecich było konieczne do
|
||||||
Państwa strony na ekranie mojego komputera (zob.{' '}
|
wyświetlenia Państwa strony na ekranie mojego komputera
|
||||||
|
(zob.{' '}
|
||||||
<a href="https://edpb.europa.eu/system/files/2021-11/edpb_guidelines_082020_on_the_targeting_of_social_media_users_pl_0.pdf">
|
<a href="https://edpb.europa.eu/system/files/2021-11/edpb_guidelines_082020_on_the_targeting_of_social_media_users_pl_0.pdf">
|
||||||
Wytyczne 8/2020 EROD dotyczące targetowania użytkowników
|
Wytyczne 8/2020 EROD dotyczące targetowania użytkowników
|
||||||
mediów społecznościowych
|
mediów społecznościowych
|
||||||
|
@ -294,31 +311,33 @@ export default function EmailTemplate2({
|
||||||
, par. 49);.{' '}
|
, par. 49);.{' '}
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Pozostaje zatem „Uzasadniony Interes”. Aby Administrator mógł
|
Pozostaje zatem „Uzasadniony Interes”. Aby Administrator
|
||||||
używać uzasadnionego interesu jako podstawy prawnej targetowania
|
mógł używać uzasadnionego interesu jako podstawy prawnej
|
||||||
użytkowników Sieci, muszą zostać spełnione m.in. następujące
|
targetowania użytkowników Sieci, muszą zostać spełnione
|
||||||
warunki:{' '}
|
m.in. następujące warunki:{' '}
|
||||||
</p>
|
</p>
|
||||||
<ol>
|
<ol>
|
||||||
<li>
|
<li>
|
||||||
Administrator danych lub podmiot trzeci, któremu dane są
|
Administrator danych lub podmiot trzeci, któremu dane są
|
||||||
ujawniane musi{' '}
|
ujawniane musi{' '}
|
||||||
<strong>
|
<strong>
|
||||||
faktycznie realizować dany konkretny uzasadniony interes
|
faktycznie realizować dany konkretny uzasadniony
|
||||||
|
interes
|
||||||
</strong>{' '}
|
</strong>{' '}
|
||||||
(
|
(
|
||||||
<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">
|
<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">
|
||||||
Wyrok TSUE z dnia 29 lipca 2019 r. w sprawie Fashion ID,
|
Wyrok TSUE z dnia 29 lipca 2019 r. w sprawie Fashion
|
||||||
C-40/17, ECLI:EU:C:2019:629
|
ID, C-40/17, ECLI:EU:C:2019:629
|
||||||
</a>
|
</a>
|
||||||
, pkt 95.)
|
, pkt 95.)
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
Takie przetwarzanie danych jest <strong>konieczne</strong>{' '}
|
Takie przetwarzanie danych jest{' '}
|
||||||
dla potrzeb wynikających z danego uzasadnionego interesu (
|
<strong>konieczne</strong> dla potrzeb wynikających z
|
||||||
|
danego uzasadnionego interesu (
|
||||||
<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">
|
<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">
|
||||||
Wyrok TSUE z dnia 29 lipca 2019 r. w sprawie Fashion ID,
|
Wyrok TSUE z dnia 29 lipca 2019 r. w sprawie Fashion
|
||||||
C-40/17, ECLI:EU:C:2019:629
|
ID, C-40/17, ECLI:EU:C:2019:629
|
||||||
</a>
|
</a>
|
||||||
, pkt 95.)
|
, pkt 95.)
|
||||||
</li>
|
</li>
|
||||||
|
@ -327,19 +346,19 @@ export default function EmailTemplate2({
|
||||||
prawami i wolnościami osoby, której dotyczą przetwarzane
|
prawami i wolnościami osoby, której dotyczą przetwarzane
|
||||||
dane (
|
dane (
|
||||||
<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">
|
<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">
|
||||||
Wyrok TSUE z dnia 29 lipca 2019 r. w sprawie Fashion ID,
|
Wyrok TSUE z dnia 29 lipca 2019 r. w sprawie Fashion
|
||||||
C-40/17, ECLI:EU:C:2019:629
|
ID, C-40/17, ECLI:EU:C:2019:629
|
||||||
</a>
|
</a>
|
||||||
, pkt 95.)
|
, pkt 95.)
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
Osoby, których dane dotyczą, powinny mieć możliwość
|
Osoby, których dane dotyczą, powinny mieć możliwość
|
||||||
wyrażenia sprzeciwu wobec przetwarzania ich danych do celów
|
wyrażenia sprzeciwu wobec przetwarzania ich danych do
|
||||||
związanych z targetowaniem{' '}
|
celów związanych z targetowaniem{' '}
|
||||||
<strong>przed rozpoczęciem przetwarzania</strong> (zob.{' '}
|
<strong>przed rozpoczęciem przetwarzania</strong> (zob.{' '}
|
||||||
<a href="https://edpb.europa.eu/system/files/2021-11/edpb_guidelines_082020_on_the_targeting_of_social_media_users_pl_0.pdf">
|
<a href="https://edpb.europa.eu/system/files/2021-11/edpb_guidelines_082020_on_the_targeting_of_social_media_users_pl_0.pdf">
|
||||||
Wytyczne 8/2020 EROD dotyczące targetowania użytkowników
|
Wytyczne 8/2020 EROD dotyczące targetowania
|
||||||
mediów społecznościowych
|
użytkowników mediów społecznościowych
|
||||||
</a>
|
</a>
|
||||||
, par. 54);
|
, par. 54);
|
||||||
</li>
|
</li>
|
||||||
|
@ -351,24 +370,26 @@ export default function EmailTemplate2({
|
||||||
Apeluję o wdrożenie zmian na stronie, które sprawią, że
|
Apeluję o wdrożenie zmian na stronie, które sprawią, że
|
||||||
dopiero po świadomym niewyrażeniu sprzeciwu przez
|
dopiero po świadomym niewyrażeniu sprzeciwu przez
|
||||||
użytkownika aktywowane są procesy przetwarzania danych
|
użytkownika aktywowane są procesy przetwarzania danych
|
||||||
osobowych, których podstawą prawną jest uzasadniony interes.
|
osobowych, których podstawą prawną jest uzasadniony
|
||||||
|
interes.
|
||||||
</p>
|
</p>
|
||||||
) : (
|
) : (
|
||||||
''
|
''
|
||||||
)}
|
)}
|
||||||
<p>
|
<p>
|
||||||
Jeżeli istnieją jednak inne niż uzasadniony interes ważne
|
Jeżeli istnieją jednak inne niż uzasadniony interes ważne
|
||||||
podstawy prawne do takiego przetwarzania moich danych osobowych
|
podstawy prawne do takiego przetwarzania moich danych
|
||||||
przez Państwa stronę, proszę o ich wskazanie,{' '}
|
osobowych przez Państwa stronę, proszę o ich wskazanie,{' '}
|
||||||
<em>dla każdego z wymienionych podmiotów z osobna</em>.
|
<em>dla każdego z wymienionych podmiotów z osobna</em>.
|
||||||
(Przypominam, że Art. 173 ustawy Prawo Telekomunikacyjne nie ma
|
(Przypominam, że Art. 173 ustawy Prawo Telekomunikacyjne nie
|
||||||
tutaj zastosowania, ponieważ nie pytam o zapis/odczyt plików na
|
ma tutaj zastosowania, ponieważ nie pytam o zapis/odczyt
|
||||||
moim komputerze, tylko o ujawnianie moich danych osobowych
|
plików na moim komputerze, tylko o ujawnianie moich danych
|
||||||
podmiotom trzecim). W przeciwnym wypadku, aby ustalić, czy moje
|
osobowych podmiotom trzecim). W przeciwnym wypadku, aby
|
||||||
dane były przez Państwa przetwarzane na mocy uzasadnionego
|
ustalić, czy moje dane były przez Państwa przetwarzane na
|
||||||
interesu zgodnie z prawem, proszę o wypełnienie następującego
|
mocy uzasadnionego interesu zgodnie z prawem, proszę o
|
||||||
szablonu (lub udzielenie tych samych informacji w innej postaci,
|
wypełnienie następującego szablonu (lub udzielenie tych
|
||||||
przy zachowaniu zakresu i szczegółowości informacji:
|
samych informacji w innej postaci, przy zachowaniu zakresu i
|
||||||
|
szczegółowości informacji:
|
||||||
</p>
|
</p>
|
||||||
<div style={{ border: '1px solid black', padding: '1rem' }}>
|
<div style={{ border: '1px solid black', padding: '1rem' }}>
|
||||||
<p>
|
<p>
|
||||||
|
@ -386,21 +407,24 @@ export default function EmailTemplate2({
|
||||||
<em>
|
<em>
|
||||||
<ClusterRangeSummary {...{ cluster }} />
|
<ClusterRangeSummary {...{ cluster }} />
|
||||||
</em>{' '}
|
</em>{' '}
|
||||||
firmie <Placeholder>nazwa firmy</Placeholder>,
|
firmie{' '}
|
||||||
|
<Placeholder>nazwa firmy</Placeholder>,
|
||||||
która jest właścicielem domeny{' '}
|
która jest właścicielem domeny{' '}
|
||||||
<strong>{cluster.id}</strong> i swoją politykę
|
<strong>{cluster.id}</strong> i swoją
|
||||||
prywatności publikuje pod adresem{' '}
|
politykę prywatności publikuje pod adresem{' '}
|
||||||
<Placeholder>
|
<Placeholder>
|
||||||
adres URL polityki prywatności tej firmy
|
adres URL polityki prywatności tej firmy
|
||||||
</Placeholder>
|
</Placeholder>
|
||||||
. Podstawą prawną takiego przetwarzania danych
|
. Podstawą prawną takiego przetwarzania
|
||||||
przez naszą stronę jest uzasadniony interes:{' '}
|
danych przez naszą stronę jest uzasadniony
|
||||||
|
interes:{' '}
|
||||||
<Placeholder>
|
<Placeholder>
|
||||||
na czym polega ten uzasadniony interes, tzn.
|
na czym polega ten uzasadniony interes,
|
||||||
bieżące działania podejmowane przez podmiot
|
tzn. bieżące działania podejmowane przez
|
||||||
realizujący ten interes lub korzyści dla
|
podmiot realizujący ten interes lub
|
||||||
podmiotu realizującego ten interes
|
korzyści dla podmiotu realizującego ten
|
||||||
oczekiwane w bardzo bliskiej przyszłości
|
interes oczekiwane w bardzo bliskiej
|
||||||
|
przyszłości
|
||||||
</Placeholder>{' '}
|
</Placeholder>{' '}
|
||||||
realizowany przez{' '}
|
realizowany przez{' '}
|
||||||
<Placeholder>
|
<Placeholder>
|
||||||
|
@ -409,9 +433,10 @@ export default function EmailTemplate2({
|
||||||
wspomnianych korzyści?
|
wspomnianych korzyści?
|
||||||
</Placeholder>
|
</Placeholder>
|
||||||
. Ujawnienie{' '}
|
. Ujawnienie{' '}
|
||||||
<ClusterRangeSummary {...{ cluster }} /> temu
|
<ClusterRangeSummary {...{ cluster }} />{' '}
|
||||||
podmiotowi przez naszą stronę było konieczne dla
|
temu podmiotowi przez naszą stronę było
|
||||||
potrzeb wynikających z tego interesu, ponieważ
|
konieczne dla potrzeb wynikających z tego
|
||||||
|
interesu, ponieważ
|
||||||
<Placeholder>
|
<Placeholder>
|
||||||
uzasadnienie konieczności
|
uzasadnienie konieczności
|
||||||
</Placeholder>
|
</Placeholder>
|
||||||
|
@ -422,15 +447,15 @@ export default function EmailTemplate2({
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
Proszę w szczególności zwrócić uwagę na podanie adresów do
|
Proszę w szczególności zwrócić uwagę na podanie adresów do
|
||||||
polityk prywatności tych firm, abym wiedział, jak skontaktować
|
polityk prywatności tych firm, abym wiedział, jak
|
||||||
się z nimi i wnioskować o usunięcie z ich baz wysłanych przez
|
skontaktować się z nimi i wnioskować o usunięcie z ich baz
|
||||||
Państwa stronę moich danych. )
|
wysłanych przez Państwa stronę moich danych. )
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
W odpowiedzi proszę się nie powoływać na IAB Europe i ich
|
W odpowiedzi proszę się nie powoływać na IAB Europe i ich
|
||||||
rzekomą renomę w tworzeniu rozwiązań zgodnych z RODO. IAB chroni
|
rzekomą renomę w tworzeniu rozwiązań zgodnych z RODO. IAB
|
||||||
interes reklamodawców, a nie Użytkowników, i ich rozwiązania
|
chroni interes reklamodawców, a nie Użytkowników, i ich
|
||||||
(np. TCF) są{' '}
|
rozwiązania (np. TCF) są{' '}
|
||||||
<a href="https://panoptykon.org/search/site/IAB">
|
<a href="https://panoptykon.org/search/site/IAB">
|
||||||
notorycznie niezgodne z RODO i pozbawione szacunku dla
|
notorycznie niezgodne z RODO i pozbawione szacunku dla
|
||||||
Użytkowników
|
Użytkowników
|
||||||
|
@ -438,24 +463,26 @@ export default function EmailTemplate2({
|
||||||
.
|
.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Apeluję także o wprowadzenie stosownych zmian na stronie tak,
|
Apeluję także o wprowadzenie stosownych zmian na stronie
|
||||||
aby nie pozostawiać cienia wątpliwości odnośnie tego, na mocy
|
tak, aby nie pozostawiać cienia wątpliwości odnośnie tego,
|
||||||
jakiej przesłanki legalizującej dane są przetwarzane przez
|
na mocy jakiej przesłanki legalizującej dane są przetwarzane
|
||||||
wspomniane podmioty trzecie, lub tak, aby te dane po prostu nie
|
przez wspomniane podmioty trzecie, lub tak, aby te dane po
|
||||||
były wysyłane. Pomoże to zachować prywatność innym użytkownikom
|
prostu nie były wysyłane. Pomoże to zachować prywatność
|
||||||
Państwa strony. Polecam Państwa uwadze
|
innym użytkownikom Państwa strony. Polecam Państwa uwadze
|
||||||
<a href="https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf">
|
<a href="https://edpb.europa.eu/sites/default/files/files/file1/edpb_guidelines_202005_consent_pl.pdf">
|
||||||
{' '}
|
{' '}
|
||||||
oficjalne wytyczne EROD dotyczące zgody w kontekście RODO
|
oficjalne wytyczne EROD dotyczące zgody w kontekście
|
||||||
|
RODO
|
||||||
</a>
|
</a>
|
||||||
. Aby na przykład zapobiec automatycznemu wysyłaniu historii
|
. Aby na przykład zapobiec automatycznemu wysyłaniu historii
|
||||||
przeglądania do podmiotów trzecich przez Państwa stronę, można
|
przeglądania do podmiotów trzecich przez Państwa stronę,
|
||||||
po prostu ustawić odpowiednio treść nagłówka{' '}
|
można po prostu ustawić odpowiednio treść nagłówka{' '}
|
||||||
<a href="https://developer.mozilla.org/pl/docs/Web/HTTP/Headers/Referrer-Policy">
|
<a href="https://developer.mozilla.org/pl/docs/Web/HTTP/Headers/Referrer-Policy">
|
||||||
Referrer-Policy{' '}
|
Referrer-Policy{' '}
|
||||||
</a>
|
</a>
|
||||||
.
|
.
|
||||||
</p>
|
</p>
|
||||||
|
</article>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
|
||||||
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<title>Wygeneruj maila co zgłoszenia</title>
|
<title>Treść maila do zgłoszenia</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
|
||||||
<div id="app"></div>
|
<body>
|
||||||
|
<div
|
||||||
|
id="app"
|
||||||
|
style="max-width: 50rem; margin: 0 auto; padding: 1rem 0rem 2rem;"
|
||||||
|
></div>
|
||||||
<style>
|
<style>
|
||||||
tr:hover {
|
tr:hover {
|
||||||
background-color: hsla(0, 0%, 0%, 0.1);
|
background-color: hsla(0, 0%, 0%, 0.1);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<script src="/lib/report-window/report-window.js"></script>
|
<script src="/lib/report-window/report-window.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
|
@ -1,14 +1,14 @@
|
||||||
import { EventEmitter } from "events";
|
import { EventEmitter } from 'events';
|
||||||
import ExtendedRequest from "./extended-request";
|
import ExtendedRequest from './extended-request';
|
||||||
import { Sources, StolenDataEntry } from "./stolen-data-entry";
|
import { Sources, StolenDataEntry } from './stolen-data-entry';
|
||||||
|
|
||||||
import { allSubhosts, isSameURL, reduceConcat, unique } from "./util";
|
import { allSubhosts, isSameURL, reduceConcat, unique } from './util';
|
||||||
|
|
||||||
const source_priority: Array<Sources> = [
|
const source_priority: Array<Sources> = [
|
||||||
"cookie",
|
'cookie',
|
||||||
"pathname",
|
'pathname',
|
||||||
"queryparams",
|
'queryparams',
|
||||||
"header",
|
'header',
|
||||||
];
|
];
|
||||||
|
|
||||||
export class RequestCluster extends EventEmitter {
|
export class RequestCluster extends EventEmitter {
|
||||||
|
@ -20,12 +20,12 @@ export class RequestCluster extends EventEmitter {
|
||||||
}
|
}
|
||||||
add(request: ExtendedRequest) {
|
add(request: ExtendedRequest) {
|
||||||
this.requests.push(request);
|
this.requests.push(request);
|
||||||
this.emit("change");
|
this.emit('change');
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleExpanded(state: boolean) {
|
toggleExpanded(state: boolean) {
|
||||||
this.expanded = state;
|
this.expanded = state;
|
||||||
this.emit("change");
|
this.emit('change');
|
||||||
}
|
}
|
||||||
|
|
||||||
hasCookies() {
|
hasCookies() {
|
||||||
|
@ -42,7 +42,11 @@ export class RequestCluster extends EventEmitter {
|
||||||
minValueLength: number;
|
minValueLength: number;
|
||||||
cookiesOnly: boolean;
|
cookiesOnly: boolean;
|
||||||
cookiesOrOriginOnly: boolean;
|
cookiesOrOriginOnly: boolean;
|
||||||
} = { minValueLength: 0, cookiesOnly: false, cookiesOrOriginOnly: false }
|
} = {
|
||||||
|
minValueLength: 0,
|
||||||
|
cookiesOnly: false,
|
||||||
|
cookiesOrOriginOnly: false,
|
||||||
|
}
|
||||||
): StolenDataEntry[] {
|
): StolenDataEntry[] {
|
||||||
this.representativeStolenData = this.requests
|
this.representativeStolenData = this.requests
|
||||||
.map((request) => request.stolenData)
|
.map((request) => request.stolenData)
|
||||||
|
@ -51,12 +55,12 @@ export class RequestCluster extends EventEmitter {
|
||||||
.filter((entry) => {
|
.filter((entry) => {
|
||||||
return entry.value.length >= filter.minValueLength;
|
return entry.value.length >= filter.minValueLength;
|
||||||
})
|
})
|
||||||
.filter((entry) => !filter.cookiesOnly || entry.source === "cookie")
|
.filter((entry) => !filter.cookiesOnly || entry.source === 'cookie')
|
||||||
.filter(
|
.filter(
|
||||||
(entry) =>
|
(entry) =>
|
||||||
!filter.cookiesOrOriginOnly ||
|
!filter.cookiesOrOriginOnly ||
|
||||||
entry.source === "cookie" ||
|
entry.source === 'cookie' ||
|
||||||
entry.classification === "history"
|
entry.classification === 'history'
|
||||||
)
|
)
|
||||||
.sort((entry1, entry2) => {
|
.sort((entry1, entry2) => {
|
||||||
if (entry1.value > entry2.value) {
|
if (entry1.value > entry2.value) {
|
||||||
|
|
|
@ -5,10 +5,12 @@
|
||||||
text-rendering: optimizelegibility;
|
text-rendering: optimizelegibility;
|
||||||
font-smooth: auto;
|
font-smooth: auto;
|
||||||
-webkit-font-smoothing: auto;
|
-webkit-font-smoothing: auto;
|
||||||
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
html {
|
html {
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
button {
|
||||||
|
@ -38,7 +40,7 @@ select {
|
||||||
|
|
||||||
#app {
|
#app {
|
||||||
user-select: text;
|
user-select: text;
|
||||||
padding: 0.5rem 1rem;
|
padding: 0rem 1rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: column;
|
flex-flow: column;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
|
|
|
@ -4,8 +4,12 @@ header {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 8rem 1fr 1rem;
|
grid-template-columns: 8rem 1fr 1rem;
|
||||||
max-height: 4rem;
|
max-height: 4rem;
|
||||||
|
padding-top: 0.5rem;
|
||||||
padding-bottom: 0.5rem;
|
padding-bottom: 0.5rem;
|
||||||
border-bottom: 1px solid $light-grey;
|
border-bottom: 1px solid $light-grey;
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
background: #fff;
|
||||||
|
|
||||||
.webpage-metadata {
|
.webpage-metadata {
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
|
@ -31,5 +35,37 @@ header {
|
||||||
border: none;
|
border: none;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
nav {
|
||||||
|
padding: 0.25rem 0;
|
||||||
|
border-bottom: 1px solid $light-grey;
|
||||||
|
|
||||||
|
button {
|
||||||
|
border: none;
|
||||||
|
cursor: pointer;
|
||||||
|
color: $mid-grey;
|
||||||
|
padding: 0.25rem 0rem;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
line-height: 1rem;
|
||||||
|
line-height: 1.5rem;
|
||||||
|
background: #fff;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: #000;
|
||||||
|
text-decoration: underline;
|
||||||
|
svg path {
|
||||||
|
fill: #000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
padding-left: 0.5rem;
|
||||||
|
font-size: 0.875rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,9 +2,14 @@ import React, { Fragment, useEffect, useState } from 'react';
|
||||||
import ReactDOM from 'react-dom';
|
import ReactDOM from 'react-dom';
|
||||||
import Options from '../options';
|
import Options from '../options';
|
||||||
import { StolenData } from './stolen-data';
|
import { StolenData } from './stolen-data';
|
||||||
import { useEmitter } from '../util';
|
import { getshorthost, useEmitter } from '../util';
|
||||||
import { getMemory } from '../memory';
|
import { getMemory } from '../memory';
|
||||||
import InfoCircle from '../assets/icons/info_circle_outline.svg';
|
import { RequestCluster } from '../request-cluster';
|
||||||
|
import InfoCircleIcon from '../assets/icons/info_circle_outline.svg';
|
||||||
|
import SettingsIcon from '../assets/icons/settings.svg';
|
||||||
|
import TrashIcon from '../assets/icons/trash_full.svg';
|
||||||
|
import MailIcon from '../assets/icons/mail.svg';
|
||||||
|
import ShortLeftIcon from '../assets/icons/short_left.svg';
|
||||||
|
|
||||||
async function getCurrentTab() {
|
async function getCurrentTab() {
|
||||||
const [tab] = await browser.tabs.query({
|
const [tab] = await browser.tabs.query({
|
||||||
|
@ -64,14 +69,54 @@ const Sidebar = () => {
|
||||||
{origin}
|
{origin}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
{stolenDataView ? (
|
||||||
<a href="https://internet-czas-dzialac.pl">
|
<a href="https://internet-czas-dzialac.pl">
|
||||||
<InfoCircle />
|
<InfoCircleIcon />
|
||||||
</a>
|
</a>
|
||||||
|
) : (
|
||||||
|
<button onClick={() => setStolenDataView(true)}>
|
||||||
|
<ShortLeftIcon />
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<nav>
|
<nav>
|
||||||
<button onClick={() => setStolenDataView(!stolenDataView)}>
|
<button onClick={() => setStolenDataView(!stolenDataView)}>
|
||||||
{stolenDataView ? 'Options' : 'Data'}
|
{/* {stolenDataView ? 'Options' : 'Data'}
|
||||||
|
*/}
|
||||||
|
<SettingsIcon />
|
||||||
|
<span>Ustawienia wtyczki</span>
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
onClick={() => {
|
||||||
|
getMemory().removeCookiesFor(
|
||||||
|
origin,
|
||||||
|
getshorthost(new URL(origin).host)
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{/* {stolenDataView ? 'Options' : 'Data'}
|
||||||
|
*/}
|
||||||
|
<TrashIcon />
|
||||||
|
<span>Wyczyść ciasteczka tej domeny</span>
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
// disabled={RequestCluster.hasMarks()}
|
||||||
|
onClick={() => {
|
||||||
|
const params = [
|
||||||
|
'height=' + screen.height,
|
||||||
|
'width=' + screen.width,
|
||||||
|
'fullscreen=yes',
|
||||||
|
].join(',');
|
||||||
|
window.open(
|
||||||
|
`/report-window/report-window.html?origin=${origin}`,
|
||||||
|
'new_window',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<MailIcon />
|
||||||
|
<span>Utwórz wiadomość dla administratora tej witryny</span>
|
||||||
</button>
|
</button>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import React from "react";
|
import React from 'react';
|
||||||
import { RequestCluster } from "../request-cluster";
|
import { RequestCluster } from '../request-cluster';
|
||||||
|
|
||||||
import StolenDataCluster from "./stolen-data-cluster";
|
import StolenDataCluster from './stolen-data-cluster';
|
||||||
import { getshorthost } from "../util";
|
import { getshorthost } from '../util';
|
||||||
import { getMemory } from "../memory";
|
import { getMemory } from '../memory';
|
||||||
|
|
||||||
export function StolenData({
|
export function StolenData({
|
||||||
origin,
|
origin,
|
||||||
|
@ -28,16 +28,15 @@ export function StolenData({
|
||||||
.filter((cluster) => !cookiesOnly || cluster.hasCookies())
|
.filter((cluster) => !cookiesOnly || cluster.hasCookies())
|
||||||
.filter(
|
.filter(
|
||||||
(cluster) =>
|
(cluster) =>
|
||||||
!cookiesOrOriginOnly || cluster.hasCookies() || cluster.exposesOrigin()
|
!cookiesOrOriginOnly ||
|
||||||
|
cluster.hasCookies() ||
|
||||||
|
cluster.exposesOrigin()
|
||||||
);
|
);
|
||||||
return (
|
return (
|
||||||
<div style={{ padding: "5px" }}>
|
<div style={{ padding: '5px' }}>
|
||||||
{" "}
|
|
||||||
<div>
|
<div>
|
||||||
<h1>
|
{/* <button
|
||||||
{origin}
|
style={{ marginLeft: '1rem' }}
|
||||||
<button
|
|
||||||
style={{ marginLeft: "1rem" }}
|
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
getMemory().removeCookiesFor(
|
getMemory().removeCookiesFor(
|
||||||
origin,
|
origin,
|
||||||
|
@ -48,32 +47,34 @@ export function StolenData({
|
||||||
Wyczyść cookiesy 1st party
|
Wyczyść cookiesy 1st party
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
style={{ marginLeft: "1rem" }}
|
style={{ marginLeft: '1rem' }}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
getMemory().removeRequestsFor(origin);
|
getMemory().removeRequestsFor(origin);
|
||||||
refresh();
|
refresh();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Wyczyść pamięć
|
Wyczyść pamięć
|
||||||
</button>
|
</button> */}
|
||||||
<button
|
<button
|
||||||
onClick={() => clusters.forEach((cluster) => cluster.autoMark())}
|
onClick={() =>
|
||||||
|
clusters.forEach((cluster) => cluster.autoMark())
|
||||||
|
}
|
||||||
>
|
>
|
||||||
Zaznacz automatycznie
|
Zaznacz automatycznie
|
||||||
</button>
|
</button>
|
||||||
<button
|
{/* <button
|
||||||
style={{ marginLeft: "1rem" }}
|
style={{ marginLeft: '1rem' }}
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
window.open(
|
window.open(
|
||||||
`/report-window/report-window.html?origin=${origin}`,
|
`/report-window/report-window.html?origin=${origin}`,
|
||||||
"new_window",
|
'new_window',
|
||||||
"width=800,height=600"
|
'width=800,height=600'
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
Generuj maila
|
Generuj maila
|
||||||
</button>
|
</button> */}
|
||||||
</h1>
|
|
||||||
{clusters.map((cluster) => {
|
{clusters.map((cluster) => {
|
||||||
return (
|
return (
|
||||||
<StolenDataCluster
|
<StolenDataCluster
|
||||||
|
|
Loading…
Reference in New Issue
Block a user