From 24b1be84c3612486b42cd52fa1ee52137c407e48 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 26 Mar 2026 16:09:19 +0000 Subject: [PATCH 1/2] Initial plan From f1a55b4f74239b80e3dc181e79191d5b3c559e5d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 26 Mar 2026 16:15:07 +0000 Subject: [PATCH 2/2] Add Impressum and Datenschutz pages with footer links Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/6d3074a3-7a69-4817-b739-a7eaed9a68d6 Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- CHANGELOG.md | 1 + frontend/src/app/datenschutz/page.tsx | 384 ++++++++++++++++++++ frontend/src/app/impressum/page.tsx | 76 ++++ frontend/src/app/login/page.tsx | 9 + frontend/src/components/DashboardLayout.tsx | 12 + 5 files changed, 482 insertions(+) create mode 100644 frontend/src/app/datenschutz/page.tsx create mode 100644 frontend/src/app/impressum/page.tsx diff --git a/CHANGELOG.md b/CHANGELOG.md index 6754953..838554a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `python-jose[cryptography]` from `3.3.0` to `3.4.0` to fix an algorithm-confusion vulnerability with OpenSSH ECDSA keys (CVE affects all versions < 3.4.0). ### Added +- **Impressum & Datenschutz pages**: Added `/impressum` (legal notice per § 5 TMG) and `/datenschutz` (comprehensive privacy policy covering GDPR/DSGVO, CCPA, LGPD, and other international regulations) as public pages. Footer links to both pages were added to the dashboard layout and the login page. - **Gmail Debug Email**: New "Send Debug Email" button in the Gmail API settings section. When clicked, it injects a test email into the user's Gmail inbox via the Gmail API. The message appears to be from `christian@docuelevate.org`, includes the current date in the subject line, and is automatically labelled with `test` and `imported` (labels are created on first use) and placed in the inbox. Useful for verifying end-to-end Gmail API delivery without requiring a full mail-account polling cycle. - `GmailService.get_or_create_label()` async method: lists the user's Gmail labels and returns the matching label ID, creating the label if it does not yet exist. - `GmailService.inject_debug_email()` async method: builds a properly formatted RFC 2822 test message and calls `inject_email()` with the INBOX, `test`, and `imported` label IDs. diff --git a/frontend/src/app/datenschutz/page.tsx b/frontend/src/app/datenschutz/page.tsx new file mode 100644 index 0000000..b02206e --- /dev/null +++ b/frontend/src/app/datenschutz/page.tsx @@ -0,0 +1,384 @@ +import Link from 'next/link'; +import type { Metadata } from 'next'; + +export const metadata: Metadata = { + title: 'Datenschutz – POP3 Forwarder', +}; + +const LAST_UPDATED = 'March 26, 2026'; +const CONTACT_EMAIL = 'christianlouis@gmail.com'; + +export default function DatenschutzPage() { + return ( +
+
+

+ Datenschutzhinweis +

+

+ Letzte Aktualisierung: {LAST_UPDATED} +

+ + {/* TOC */} + + + {/* Sections */} +
+

+ 1. Verantwortlicher +

+

+ Der für die Verarbeitung Ihrer personenbezogenen Daten gemäß der + EU-Datenschutz-Grundverordnung (DSGVO) und gleichwertiger + Datenschutzgesetze weltweit verantwortliche Verantwortliche ist: +

+

+ Christian Louis IT Beratung
+ Alter Steinweg 3, 20459 Hamburg, Deutschland +

+

+ Kontakt-E-Mail:{' '} + + {CONTACT_EMAIL} + +

+

+ Bei allen datenschutzbezogenen Anfragen (Zugriff, Löschung, + Berichtigung, Widerspruch oder Beschwerden) kontaktieren Sie uns + bitte unter der obenstehenden E-Mail-Adresse. Wir werden innerhalb + von 30 Tagen (oder dem durch geltendes Recht vorgeschriebenen + Zeitraum) antworten. +

+
+ +
+

+ 2. Geltungsbereich dieser Datenschutzerklärung +

+

+ Dieser Hinweis gilt für die POP3 Forwarder-Webanwendung. Er gilt + für alle Nutzer weltweit, einschließlich derjenigen in der + Europäischen Union (EU), dem Europäischen Wirtschaftsraum (EWR), + Deutschland, dem Vereinigten Königreich (UK), der Schweiz, der + Ukraine, den Vereinigten Staaten (US), Kanada, Lateinamerika, + dem asiatisch-pazifischen Raum und Japan. +

+
+ +
+

+ 3. Datenerhebung & Zwecke +

+

+ Benutzerauthentifizierung: Wir verwenden OAuth 2.0 + (Google) und optionale lokale Authentifizierung. Über OAuth können + wir Ihren Namen, Ihre E-Mail-Adresse und Ihr Profilbild erhalten. +

+

+ E-Mail-Verarbeitung: E-Mails, die von Ihren + konfigurierten POP3-Konten abgerufen werden, werden ausschließlich + für den Zweck der Weiterleitung an Gmail verarbeitet. Der + E-Mail-Inhalt wird nicht länger gespeichert, als es betrieblich + notwendig ist. +

+

+ Audit-Protokolle: Wir führen begrenzte Protokolle + (Aktionsart, Zeitstempel, Benutzeridentifikator), um die Integrität + und Sicherheit des Dienstes zu gewährleisten. +

+

+ Rechtsgrundlage (DSGVO Art. 6): (1)(b) + Vertragsdurchführung, (1)(c) Rechtliche Verpflichtung, (1)(f) + Berechtigte Interessen. +

+
+ +
+

+ 4. Datenminimierung & Zweckbindung +

+
    +
  • + Wir erheben nur die minimalen personenbezogenen Daten, die zur + Durchführung des Dienstes erforderlich sind. +
  • +
  • + E-Mail-Inhalte werden ausschließlich für den von Ihnen + initiierten Weiterleitungszweck verarbeitet. +
  • +
  • + Es wird keine Werbung, Verhaltensverfolgung oder Profilierung + durchgeführt. +
  • +
  • + Es werden keine Tracking-Cookies oder Analysescripts geladen. +
  • +
+
+ +
+

+ 5. Verwendung von Cookies & ähnlichen Technologien +

+

+ Der Dienst verwendet nur unbedingt erforderliche Sitzungscookies, + um Ihre authentifizierte Sitzung aufrechtzuerhalten. Diese Cookies + sind für die Funktion des Dienstes unerlässlich und sind von den + Anforderungen an vorherige Zustimmung gemäß der EU-E-Privacy- + Richtlinie (Art. 5(3)) ausgenommen. Wir verwenden keine + Analyse-Cookies, Werbe-Cookies oder Tracking-Pixel. +

+
+ +
+

+ 6. Drittanbieter-Dienste +

+

+ OAuth-Anbieter (Google): Wenn Sie sich über OAuth + authentifizieren, verarbeitet der jeweilige Anbieter Ihre + Anmeldeinformationen gemäß seiner eigenen Datenschutzrichtlinie. +

+

+ Gmail API: E-Mails werden über die Gmail API in + Ihr Gmail-Konto eingespielt. Ihre OAuth-Zugangsdaten werden + verschlüsselt gespeichert. +

+

+ Kein Verkauf oder Teilen für Werbung: Wir + verkaufen, vermieten oder teilen Ihre personenbezogenen Daten + nicht mit Dritten zu Werbungs- oder Marketingzwecken. +

+
+ +
+

+ 7. Internationale Datenübertragungen +

+

+ Wenn personenbezogene Daten außerhalb des EWR übertragen werden, + verlassen wir uns auf geeignete Schutzmaßnahmen, einschließlich + Standardvertragsklauseln (SCCs) gemäß EU-Beschluss 2021/914/EU + sowie Angemessenheitsentscheidungen der Europäischen Kommission. +

+
+ +
+

+ 8. Datenaufbewahrung +

+
    +
  • + Sitzungsdaten: Wird gelöscht, wenn Sie sich + abmelden oder nach Ablauf der Sitzung. +
  • +
  • + Kontokonfiguration & Metadaten: Für die Dauer + Ihrer Nutzung des Dienstes aufbewahrt. +
  • +
  • + Audit-Protokolle: Für bis zu 90 Tage + aufbewahrt. +
  • +
  • + OAuth-Token: In verschlüsselter Form gespeichert + und jederzeit über Ihren OAuth-Anbieter widerrufbar. +
  • +
+
+ +
+

+ 9. Datensicherheit +

+
    +
  • Verschlüsselung von Anmeldeinformationen im Ruhezustand.
  • +
  • + Transport Layer Security (TLS/HTTPS) für alle Kommunikationen. +
  • +
  • + Rollenbasierte Zugriffskontrollen zum Schutz personenbezogener + Daten. +
  • +
  • CSRF-Schutz für alle zustandsändernden Anfragen.
  • +
+
+ +
+

+ 10. Ihre Rechte (EU / EWR / UK / Schweiz) +

+
    +
  • + Recht auf Zugang (Art. 15): Kopie der über Sie + gespeicherten Daten. +
  • +
  • + Recht auf Berichtigung (Art. 16): Korrektur + ungenauer Daten. +
  • +
  • + Recht auf Löschung (Art. 17): Löschung Ihrer + persönlichen Daten. +
  • +
  • + Recht auf Einschränkung (Art. 18): Vorübergehende + Aussetzung der Verarbeitung. +
  • +
  • + Recht auf Datenübertragbarkeit (Art. 20): Daten + in maschinenlesbarem Format. +
  • +
  • + Widerspruchsrecht (Art. 21): Widerspruch gegen + Verarbeitung auf Basis berechtigter Interessen. +
  • +
+

+ Um eines dieser Rechte auszuüben, kontaktieren Sie uns unter{' '} + + {CONTACT_EMAIL} + + . Beschwerden können an die zuständige Datenschutzbehörde (in + Deutschland: BfDI) gerichtet werden. +

+
+ +
+

+ 11. Zusätzliche Rechte – Vereinigte Staaten (CCPA / CPRA) +

+

+ Wenn Sie ein Bewohner Kaliforniens oder eines anderen US- + Bundesstaates mit anwendbarer Datenschutzgesetzgebung sind, haben + Sie das Recht auf Auskunft, Löschung, Berichtigung und Widerspruch + gegen den Verkauf persönlicher Daten. Wir verkaufen oder teilen + keine personenbezogenen Informationen. Kontakt:{' '} + + {CONTACT_EMAIL} + + . +

+
+ +
+

+ 12. Zusätzliche Rechte – Kanada (PIPEDA / Gesetz 25) +

+

+ Wenn Sie sich in Kanada befinden, haben Sie das Recht auf Zugang, + Korrektur und Widerruf der Zustimmung gemäß PIPEDA und den + provinziellen Datenschutzgesetzen. Kontakt:{' '} + + {CONTACT_EMAIL} + + . +

+
+ +
+

+ 13. Zusätzliche Rechte – Lateinamerika (LGPD & andere) +

+

+ Brasilianische Nutzer haben gemäß LGPD (Lei 13.709/2018) das Recht + auf Bestätigung der Verarbeitung, Zugang, Berichtigung, Löschung + und Datenübertragbarkeit. Nutzer in anderen lateinamerikanischen + Ländern können entsprechende Rechte gemäß nationalem Recht ausüben. + Kontakt:{' '} + + {CONTACT_EMAIL} + + . +

+
+ +
+

+ 14. Zusätzliche Rechte – Asien-Pazifik & Japan +

+

+ Nutzer in Japan (APPI), Australien (Privacy Act 1988), Südkorea + (PIPA) sowie anderen APJ-Märkten (Singapur PDPA, Neuseeland, Indien + DPDP) können entsprechende Datenschutzrechte ausüben. Kontakt:{' '} + + {CONTACT_EMAIL} + + . +

+
+ +
+

+ 15. Zusätzliche Rechte – Ukraine +

+

+ Nutzer in der Ukraine sind nach dem ukrainischen Gesetz „Über den + Schutz persönlicher Daten“ (Nr. 2297-VI) geschützt. Ihre Rechte + umfassen Zugang, Berichtigung, Sperrung, Löschung und das Recht + auf Widerspruch gegen die Verarbeitung. Kontakt:{' '} + + {CONTACT_EMAIL} + + . +

+
+ +
+

+ 16. Aktualisierungen zu dieser Datenschutzerklärung +

+

+ Wir können diese Mitteilung von Zeit zu Zeit aktualisieren. Das + Datum „Letzte Aktualisierung“ am Anfang dieser Seite gibt an, wann + die Mitteilung zuletzt überarbeitet wurde. Bei wesentlichen + Änderungen werden wir die Nutzer durch eine Benachrichtigung in der + Anwendung oder per E-Mail informieren. +

+

+ Bei Fragen oder Bedenken kontaktieren Sie uns unter{' '} + + {CONTACT_EMAIL} + + . +

+
+ +
+ + Impressum + + + Zurück zur Anmeldung + +
+
+
+ ); +} diff --git a/frontend/src/app/impressum/page.tsx b/frontend/src/app/impressum/page.tsx new file mode 100644 index 0000000..0859416 --- /dev/null +++ b/frontend/src/app/impressum/page.tsx @@ -0,0 +1,76 @@ +import Link from 'next/link'; +import type { Metadata } from 'next'; + +export const metadata: Metadata = { + title: 'Impressum – POP3 Forwarder', +}; + +export default function ImpressumPage() { + return ( +
+
+

Impressum

+ +
+

+ Angaben gemäß § 5 TMG +

+

+ Christian Louis IT Beratung
+ Alter Steinweg 3
+ 20459 Hamburg
+ Deutschland +

+
+ +
+

+ Vertreten durch +

+

Christian Krakau-Louis

+
+ +
+

Kontakt

+

+ Fax: +49 40 97074609
+ E-Mail:{' '} + + christianlouis@gmail.com + +

+
+ +
+

+ Umsatzsteuer-Identifikationsnummer +

+

+ Umsatzsteuer-Identifikationsnummer gemäß § 27a Umsatzsteuergesetz: +
+ DE202899017 +

+
+ +
+

+ Dieses Projekt ist Teil einer Open-Source-Initiative. Alle Rechte + vorbehalten. +

+
+ +
+ + Datenschutz + + + Zurück zur Anmeldung + +
+
+
+ ); +} diff --git a/frontend/src/app/login/page.tsx b/frontend/src/app/login/page.tsx index 49d00ae..cc73535 100644 --- a/frontend/src/app/login/page.tsx +++ b/frontend/src/app/login/page.tsx @@ -149,6 +149,15 @@ export default function LoginPage() {

+ +
+ + Impressum + + + Datenschutz + +
); diff --git a/frontend/src/components/DashboardLayout.tsx b/frontend/src/components/DashboardLayout.tsx index c7be8a5..ad66642 100644 --- a/frontend/src/components/DashboardLayout.tsx +++ b/frontend/src/components/DashboardLayout.tsx @@ -157,6 +157,18 @@ export function DashboardLayout({ children }: DashboardLayoutProps) { + + {/* Footer */} + );