Belastbarer Einwilligungsnachweis: - Schema/Migration: legal_acceptances + ipAddress, userAgent (contentHash bestand bereits) - Erfassung bei Registrierung und jeder Zustimmung (/api/legal/accept) - Admin /admin/legal: neue Spalten IP + Gerät/Browser + Hash; CSV-Export um ipAddress, userAgent, contentHash erweitert - Datenschutzerklärung + Dateninventar: IP/User-Agent als dokumentierter Beweiszweck ergänzt Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
208 lines
11 KiB
TypeScript
208 lines
11 KiB
TypeScript
'use client'
|
||
|
||
import { LegalPage } from '@/components/legal/legal-page'
|
||
import { legal, isPlaceholder } from '@/config/legal'
|
||
|
||
function Val({ value }: { value: string }) {
|
||
if (isPlaceholder(value)) {
|
||
return <span className="text-amber-600 dark:text-amber-400 font-medium">{value}</span>
|
||
}
|
||
return <span className="text-foreground font-medium">{value}</span>
|
||
}
|
||
|
||
export default function DatenschutzPage() {
|
||
const d = legal.documents.privacy
|
||
return (
|
||
<LegalPage
|
||
title="Datenschutzerklärung"
|
||
version={d.version}
|
||
publishedAt={d.publishedAt}
|
||
intro={`Diese Erklärung informiert transparent darüber, welche Personendaten ${legal.projectName} bearbeitet, zu welchem Zweck und wer daran beteiligt ist. Sie orientiert sich am Schweizer Datenschutzgesetz (DSG).`}
|
||
>
|
||
<section>
|
||
<h2>1. Verantwortlicher</h2>
|
||
<p>
|
||
Verantwortlich für die Datenbearbeitung ist der Betreiber der Plattform{' '}
|
||
<Val value={legal.operatorName} /> (<Val value={legal.operatorLegalForm} />),{' '}
|
||
<Val value={legal.postalAddress} />.
|
||
</p>
|
||
<p><strong>Datenschutzkontakt:</strong> <Val value={legal.privacyContactEmail} /></p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>2. Welche Daten werden bearbeitet?</h2>
|
||
<ul>
|
||
<li><strong>Registrierungs-/Kontodaten:</strong> Name, E-Mail-Adresse, Organisationsname, Rolle. Das Passwort wird mit einem geeigneten Einwegverfahren (bcrypt) gehasht und nie im Klartext gespeichert.</li>
|
||
<li><strong>Einsatz-/Inhaltsdaten:</strong> Lagepläne, Journaleinträge, Zeichnungen, Koordinaten, Symbole, hochgeladene Dateien (Logos, Planbilder, Symbole) sowie zugehörige Projekt- und Organisationsdaten.</li>
|
||
<li><strong>Protokoll-/Sicherheitsdaten:</strong> technische Zugriffs- und Fehlerprotokolle (z.B. Zeitpunkt, ungefähre technische Angaben) zur Gewährleistung von Betrieb und Sicherheit.</li>
|
||
<li><strong>Zustimmungsnachweise:</strong> welche Version der Nutzungsbedingungen/Datenschutzerklärung/Organisationsbestätigung wann akzeptiert wurde — zu Beweiszwecken zusammen mit IP-Adresse und Gerät/Browser (User-Agent) sowie dem Dokument-Prüfwert (Hash).</li>
|
||
<li><strong>Unterstützungsbeiträge (optional):</strong> bei freiwilligen Beiträgen der Betrag sowie freiwillig angegebener Name/Nachricht (Zahlungsabwicklung siehe Ziffer 9).</li>
|
||
</ul>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>3. Zwecke</h2>
|
||
<ul>
|
||
<li>Bereitstellung und Betrieb der Applikation, Authentifizierung und Benutzer-/Organisationsverwaltung</li>
|
||
<li>Echtzeit-Synchronisierung von Einsatzdaten zwischen berechtigten Teammitgliedern</li>
|
||
<li>Erstellung von Rapporten und PDF-/PNG-Exporten</li>
|
||
<li>Gewährleistung von Sicherheit, Stabilität und Missbrauchsprävention</li>
|
||
<li>Technischer Support und Fehlerbehebung</li>
|
||
<li>Erfüllung rechtlicher Pflichten (soweit anwendbar)</li>
|
||
</ul>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>4. Grundlagen der Bearbeitung</h2>
|
||
<p>
|
||
Die Bearbeitung erfolgt insbesondere zur Erfüllung des Nutzungsverhältnisses (Vertrag), aufgrund
|
||
berechtigter Interessen am sicheren und stabilen Betrieb sowie – wo erforderlich – gestützt auf Ihre
|
||
Einwilligung. Zwingende gesetzliche Bestimmungen bleiben vorbehalten.
|
||
</p>
|
||
</section>
|
||
|
||
<section id="dienstleister" className="scroll-mt-20">
|
||
<h2>5. Empfänger und Dienstleister (Subprozessoren)</h2>
|
||
<p>
|
||
Für den technischen Betrieb können sorgfältig ausgewählte Dienstleister eingesetzt werden. Nachfolgend
|
||
die tatsächlich eingesetzten bzw. optional konfigurierbaren Dienste. Einige Karten-, Geocoding- und
|
||
Wetterdienste werden direkt aus Ihrem Browser aufgerufen; dabei kann die aufgerufene Kachel-/Standort-
|
||
Anfrage (und damit Ihre IP-Adresse) an den jeweiligen Anbieter übermittelt werden.
|
||
</p>
|
||
<div className="overflow-x-auto">
|
||
<table className="w-full text-xs border-collapse mt-2">
|
||
<thead>
|
||
<tr className="text-left text-foreground border-b border-border">
|
||
<th className="py-1.5 pr-3">Dienst</th>
|
||
<th className="py-1.5 pr-3">Zweck</th>
|
||
<th className="py-1.5 pr-3">Daten</th>
|
||
<th className="py-1.5">Region</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{legal.processors.map(p => (
|
||
<tr key={p.name} className="border-b border-border/50 align-top">
|
||
<td className="py-1.5 pr-3 text-foreground font-medium">{p.name}{p.optional ? ' *' : ''}</td>
|
||
<td className="py-1.5 pr-3">{p.purpose}</td>
|
||
<td className="py-1.5 pr-3">{p.data}</td>
|
||
<td className="py-1.5">{isPlaceholder(p.region) ? <span className="text-amber-600 dark:text-amber-400">{p.region}</span> : p.region}</td>
|
||
</tr>
|
||
))}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<p className="text-xs">* nur aktiv, sofern konfiguriert/genutzt (z.B. Zahlungsabwicklung, E-Mail-Versand).</p>
|
||
<p>Personendaten werden nicht zu Werbezwecken an Dritte verkauft.</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>6. Bekanntgabe ins Ausland</h2>
|
||
<p>
|
||
Je nach eingesetztem Dienstleister (z.B. Zahlungsanbieter, konfigurierter E-Mail-Anbieter, globale
|
||
Kartendienste) kann eine Bearbeitung ausserhalb der Schweiz erfolgen. Der Betreiber wählt Dienstleister
|
||
sorgfältig aus. Eine ausschliessliche Speicherung in der Schweiz wird nicht pauschal zugesichert; die
|
||
konkreten Verarbeitungsregionen sind – soweit bekannt – in der Tabelle unter Ziffer 5 bzw. in{' '}
|
||
<code>docs/legal/subprocessors.md</code> aufgeführt. Offene Punkte sind mit Platzhaltern gekennzeichnet.
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>7. Sicherheit</h2>
|
||
<p>
|
||
Es werden angemessene technische und organisatorische Massnahmen eingesetzt (u.a. Rollen- und
|
||
Mandantentrennung, Passwort-Hashing, verschlüsselte Übertragung via HTTPS/TLS, Zugriffskontrollen,
|
||
Rate-Limiting). Ein vollständiger Schutz vor allen Risiken kann jedoch nicht garantiert werden.
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>8. Aufbewahrung und Löschung</h2>
|
||
<p>
|
||
Personendaten werden so lange aufbewahrt, wie es für die genannten Zwecke oder gesetzliche Pflichten
|
||
erforderlich ist. Produktivdaten werden nach Abschluss des Löschvorgangs entfernt. Daten in
|
||
Sicherungskopien (Backups) können bis zum Ablauf des regulären Backup-Zyklus fortbestehen
|
||
(Aufbewahrungsfrist der Backups: <Val value={legal.backupRetention} />). Die detaillierten Fristen sind in{' '}
|
||
<code>docs/legal/retention-and-deletion.md</code> dokumentiert.
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>9. Zahlungsabwicklung (freiwillige Beiträge)</h2>
|
||
<p>
|
||
Freiwillige Unterstützungsbeiträge werden über <strong>Stripe</strong> abgewickelt. Zahlungsdaten
|
||
(z.B. Kreditkarte, Twint) werden direkt bei Stripe erfasst und nicht in der Applikation gespeichert.
|
||
An Stripe werden der Betrag sowie ein freiwillig angegebener Name/Nachricht übermittelt. Es werden keine
|
||
wiederkehrenden Zahlungen eingerichtet. Details siehe{' '}
|
||
<a href="/unterstuetzen">Unterstützungsseite</a>.
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>10. Karten- und Geodienste</h2>
|
||
<p>
|
||
Für Karten, Adresssuche und Wetter-/Höhendaten werden Dienste von OpenStreetMap (Tiles/Nominatim),
|
||
Esri (Satellitenbilder), swisstopo (Landeskarte) sowie Open-Meteo/Open-Elevation genutzt. Diese Aufrufe
|
||
erfolgen aus Ihrem Browser; dabei kann Ihre IP-Adresse an die jeweiligen Anbieter übermittelt werden.
|
||
Karten-, Adress- und Geodaten können unvollständig, ungenau oder veraltet sein.
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>11. Cookies und lokale Speichertechnologien</h2>
|
||
<p>
|
||
Es wird ein einziges, technisch notwendiges Cookie gesetzt: <code>auth-token</code> (Session/Anmeldung,
|
||
httpOnly). Es werden keine Tracking-, Analyse- oder Werbe-Cookies eingesetzt.
|
||
</p>
|
||
<p>
|
||
Im lokalen Speicher (localStorage) Ihres Geräts werden zur Funktion technisch notwendige Angaben
|
||
abgelegt, u.a.: zwischengespeicherte Zeichnungen/Offline-Warteschlange, Cache-Zeitstempel für
|
||
Offline-Karten, Theme-Einstellung, zuletzt geöffnetes Projekt, Onboarding-Status und der Zustand des
|
||
Cookie-Hinweises. Diese Daten verbleiben auf Ihrem Gerät.
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>12. Protokolldaten</h2>
|
||
<p>
|
||
Zum Betrieb und zur Sicherheit können technische Protokolle anfallen. Diese werden auf das notwendige
|
||
Mass beschränkt; sensible Inhalte werden nach Möglichkeit von Protokollen ferngehalten.
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>13. Ihre Rechte</h2>
|
||
<p>Im Rahmen des anwendbaren Rechts stehen Ihnen insbesondere folgende Rechte zu:</p>
|
||
<ul>
|
||
<li><strong>Auskunft</strong> über die bearbeiteten Daten</li>
|
||
<li><strong>Berichtigung</strong> unrichtiger Daten</li>
|
||
<li><strong>Löschung</strong> (im Rahmen gesetzlicher Pflichten)</li>
|
||
<li><strong>Datenherausgabe/-export</strong> in einem gängigen Format</li>
|
||
<li><strong>Widerspruch</strong> gegen bestimmte Bearbeitungen</li>
|
||
<li><strong>Beschwerde</strong> bei der zuständigen Datenschutzbehörde (in der Schweiz: EDÖB)</li>
|
||
</ul>
|
||
<p>
|
||
Angemeldete Nutzer können Zustimmungen, Datenexport und Kontolöschung unter{' '}
|
||
<a href="/konto/datenschutz">Konto & Datenschutz</a> einsehen bzw. anfordern. Anfragen richten Sie an{' '}
|
||
<Val value={legal.privacyContactEmail} />; der Eingang wird bestätigt.
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>14. Sicherheitsvorfälle</h2>
|
||
<p>
|
||
Bei einem Sicherheitsvorfall mit Risiko für betroffene Personen prüft der Betreiber die erforderlichen
|
||
Massnahmen und Informationspflichten nach einem definierten internen Prozess.
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>15. Änderungen dieser Datenschutzerklärung</h2>
|
||
<p>
|
||
Diese Datenschutzerklärung kann angepasst werden. Massgebend ist die jeweils veröffentlichte Version
|
||
(siehe Kopf dieser Seite). Bei wesentlichen Änderungen wird angemessen informiert.
|
||
</p>
|
||
</section>
|
||
</LegalPage>
|
||
)
|
||
}
|