From 943e3bde1d3e85d9bc1f378df5a469e4d4c86ed7 Mon Sep 17 00:00:00 2001 From: Kuba Orlik Date: Thu, 10 Feb 2022 21:52:40 +0100 Subject: [PATCH] Prepare for unlawful data problem --- .../problems/no-information-at-all.tsx | 21 +--------- report-window/problems/problem.ts | 14 ------- report-window/problems/problem.tsx | 38 +++++++++++++++++++ report-window/problems/unlawful-data.tsx | 35 +++++++++++++++++ report-window/report-window.scss | 8 ++++ report-window/verbs.ts | 1 + 6 files changed, 83 insertions(+), 34 deletions(-) delete mode 100644 report-window/problems/problem.ts create mode 100644 report-window/problems/problem.tsx create mode 100644 report-window/problems/unlawful-data.tsx diff --git a/report-window/problems/no-information-at-all.tsx b/report-window/problems/no-information-at-all.tsx index c11e10d..d51e1e3 100644 --- a/report-window/problems/no-information-at-all.tsx +++ b/report-window/problems/no-information-at-all.tsx @@ -1,20 +1,7 @@ -import { RequestCluster } from '../../request-cluster'; import { ExplainerKey } from '../explainers'; import { v } from '../verbs'; import { Problem } from './problem'; -function formatRange(cluster: RequestCluster) { - const parts = [] as string[]; - console.log(cluster); - if (cluster.hasMarkedCookies()) { - parts.push('mojego identyfikatora internetowego pozyskanego z Cookie'); - } - if (cluster.exposesOrigin()) { - parts.push('części mojej historii przeglądania'); - } - return parts.join(' oraz '); -} - export default class NoInformationAtAllProblem extends Problem { getEmailContent() { const _ = (word: string) => v(word, this.answers.zaimek); @@ -24,13 +11,7 @@ export default class NoInformationAtAllProblem extends Problem {

{_('Moje')} dane osobowe zostały ujawnione podmiotom, które są właścicielami domen:

- + {this.getRangeDescription()}

Na stronie brakuje jednak jakichkolwiek informacji o tym, jakie są cele przetwarzania takich danych oraz jakie są podstawy prawne takiego przetwarzania. diff --git a/report-window/problems/problem.ts b/report-window/problems/problem.ts deleted file mode 100644 index 6967a30..0000000 --- a/report-window/problems/problem.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { RequestCluster } from '../../request-cluster'; -import { ExplainerKey } from '../explainers'; -import { ParsedAnswers } from '../parse-answers'; - -export abstract class Problem { - constructor(public answers: ParsedAnswers, public clusters: Record) {} - - getMarkedClusters() { - return Object.values(this.clusters).filter((c) => c.hasMarks()); - } - - abstract getEmailContent(): JSX.Element; - abstract getNecessaryExplainers(): ExplainerKey[]; -} diff --git a/report-window/problems/problem.tsx b/report-window/problems/problem.tsx new file mode 100644 index 0000000..f1e6b3e --- /dev/null +++ b/report-window/problems/problem.tsx @@ -0,0 +1,38 @@ +import { RequestCluster } from '../../request-cluster'; +import { ExplainerKey } from '../explainers'; +import { ParsedAnswers } from '../parse-answers'; + +function formatRange(cluster: RequestCluster) { + const parts = [] as string[]; + console.log(cluster); + if (cluster.hasMarkedCookies()) { + parts.push('mojego identyfikatora internetowego pozyskanego z Cookie'); + } + if (cluster.exposesOrigin()) { + parts.push('części mojej historii przeglądania'); + } + return parts.join(' oraz '); +} + +export abstract class Problem { + constructor(public answers: ParsedAnswers, public clusters: Record) {} + + abstract getEmailContent(): JSX.Element; + abstract getNecessaryExplainers(): ExplainerKey[]; + + getMarkedClusters() { + return Object.values(this.clusters).filter((c) => c.hasMarks()); + } + + getRangeDescription() { + return ( +

+ ); + } +} diff --git a/report-window/problems/unlawful-data.tsx b/report-window/problems/unlawful-data.tsx new file mode 100644 index 0000000..d91ef5e --- /dev/null +++ b/report-window/problems/unlawful-data.tsx @@ -0,0 +1,35 @@ +import { RequestCluster } from '../../request-cluster'; +import { ExplainerKey } from '../explainers'; +import { ParsedAnswers, ParsedHostAnswers } from '../parse-answers'; +import { v } from '../verbs'; +import { Problem } from './problem'; + +type UnlawfulDataClassification = 'no_purpose'; + +export function classifyUnlawfulData( + hostAnswers: ParsedHostAnswers, + cluster: RequestCluster +): UnlawfulDataClassification { + if (hostAnswers.present == 'not_mentioned' && hostAnswers.was_processing_necessary == 'no') { + return 'no_purpose'; + } +} + +export class UnlawfulData extends Problem { + static qualifies(answers: ParsedAnswers, clusters: RequestCluster[]): boolean {} + getEmailContent() { + const _ = (key: string) => v(key, this.answers.zaimek); + return ( + <> +

Przetwarzanie danych osobowych bez ważnej podsawy prawnej

+

+ {_('Moje')} dane osobowe zostały ujawnione podmiotom, które są właścicielami domen: +

+ {this.getRangeDescription()} + + ); + } + getNecessaryExplainers() { + return [] as ExplainerKey[]; + } +} diff --git a/report-window/report-window.scss b/report-window/report-window.scss index 0039e3e..6beb557 100644 --- a/report-window/report-window.scss +++ b/report-window/report-window.scss @@ -27,3 +27,11 @@ nav { margin-right: 0.5rem; } } + +p, +li, +h1, +h2, +h3 { + max-width: 70ex; +} diff --git a/report-window/verbs.ts b/report-window/verbs.ts index c962f01..96f5761 100644 --- a/report-window/verbs.ts +++ b/report-window/verbs.ts @@ -31,6 +31,7 @@ const words = { odmówiłeś: ['odmówiłeś', 'odmówiłaś', 'odmówiłoś', 'odmówiliście'], odznaczyłem: ['odznaczyłem', 'odznaczyłam', 'odznaczyłom', 'odznaczyliśmy'], proszę: ['proszę', 'proszę', 'proszę', 'prosimy'], + odmówiłem: ['odmówiłem', 'odmówiłam', 'odmówiłom', 'odmówiliśmy'], } as { [key: string]: string[] }; export default words;