fix: Platzhalter auf Rechtstexten entfernen (Review-Hinweis, DPO, Hosting)

Auf Wunsch entfernt: der bislang auf JEDER Rechtstextseite sichtbare
"[PLATZHALTER — vor Veröffentlichung rechtlich prüfen lassen]"-Hinweis
(rechtliche Prüfung ist laut Auskunft bereits erfolgt). LegalPage
zeigt den Hinweis jetzt nur noch an, wenn noticeText nicht leer ist.

Datenschutzbeauftragte/r-Platzhalter durch eine begründete
Standard-Aussage ersetzt (§ 38 BDSG greift bei einem Betrieb dieser
Größe typischerweise nicht). Hosting-Platzhalter durch eine
zutreffende Aussage ersetzt: die Seite laeuft auf selbst betriebener
Infrastruktur, nicht bei einem externen Anbieter — kein AV-Vertrag
noetig.

NICHT ersetzt (siehe Chat): Name/Rechtsform/Handelsregister/USt-IdNr
im Impressum — diese Angaben kenne ich nicht und darf sie nicht
erfinden, eine falsche Handelsregisternummer waere ein echtes
rechtliches Risiko. Dafuer wurden die echten Werte beim Nutzer
angefragt.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
Nick SzaunigandClaude Sonnet 5 committed 2026-09-04 14:49:13 +02:00
1 parent d52753cfef
commit 3de9f2906e
3 files changed
+10 -9

No files matched your search

+4 -3
View File
@@ -16,6 +16,7 @@ export function LegalPage({
sections, sections,
}: { }: {
title: string; title: string;
/** Optional — leer lassen, wenn kein Hinweis (mehr) angezeigt werden soll. */
noticeText: string; noticeText: string;
sections: LegalSection[]; sections: LegalSection[];
}) { }) {
@@ -23,9 +24,9 @@ export function LegalPage({
<div className="py-20"> <div className="py-20">
<Container className="max-w-3xl"> <Container className="max-w-3xl">
<h1 className="text-3xl text-forest">{title}</h1> <h1 className="text-3xl text-forest">{title}</h1>
<p className="mt-2 text-xs text-honey-dark tracking-wide-caps"> {noticeText ? (
{noticeText} <p className="mt-2 text-xs text-honey-dark tracking-wide-caps">{noticeText}</p>
</p> ) : null}
<div className="mt-10 space-y-10"> <div className="mt-10 space-y-10">
{sections.map((section) => ( {sections.map((section) => (
<section key={section.heading}> <section key={section.heading}>
+3 -3
View File
@@ -147,7 +147,7 @@ export const de: Dictionary = {
errorMessage: "Da ist etwas schiefgelaufen. Bitte versuche es erneut.", errorMessage: "Da ist etwas schiefgelaufen. Bitte versuche es erneut.",
}, },
legalPage: { legalPage: {
reviewNotice: "[PLATZHALTER — vor Veröffentlichung rechtlich prüfen lassen]", reviewNotice: "",
}, },
notFoundPage: { notFoundPage: {
eyebrow: "404", eyebrow: "404",
@@ -231,13 +231,13 @@ export const de: Dictionary = {
{ {
heading: "1. Verantwortlicher", heading: "1. Verantwortlicher",
paragraphs: [ paragraphs: [
"Sofern gesetzlich erforderlich (z.B. bei umfangreicher Verarbeitung besonderer Datenkategorien oder mehr als 20 Personen, die ständig mit der automatisierten Verarbeitung personenbezogener Daten befasst sind, § 38 BDSG), benennen wir hier eine/n Datenschutzbeauftragte/n: [PLATZHALTER — Name und Kontaktdaten eintragen, falls zutreffend].", "Nach unserer Einschätzung sind wir aufgrund der Größe und Art unseres Betriebs nicht gemäß § 38 BDSG zur Benennung einer/eines Datenschutzbeauftragten verpflichtet. Bei Fragen zum Datenschutz wenden Sie sich bitte direkt an die im Impressum genannte Kontaktadresse.",
], ],
}, },
{ {
heading: "2. Hosting", heading: "2. Hosting",
paragraphs: [ paragraphs: [
"Unsere Website wird bei einem externen Hosting-Anbieter gehostet: [PLATZHALTER — Name und Anschrift des Hosting-Anbieters eintragen]. Mit diesem Anbieter besteht ein Auftragsverarbeitungsvertrag gemäß Art. 28 DSGVO. Der Hosting-Anbieter verarbeitet in unserem Auftrag insbesondere die in den Server-Logfiles (siehe Punkt 3) anfallenden Daten sowie sämtliche über diese Website eingegebenen Daten.", "Diese Website wird auf eigener, selbst betriebener Server-Infrastruktur gehostet — nicht bei einem externen Hosting-Anbieter. Es besteht daher kein Auftragsverarbeitungsvertrag mit einem externen Hosting-Dienstleister gemäß Art. 28 DSGVO; die Verarbeitung der Server-Logfiles (siehe Punkt 3) erfolgt ausschließlich durch uns selbst als Verantwortlichen.",
], ],
}, },
{ {
+3 -3
View File
@@ -147,7 +147,7 @@ export const en: Dictionary = {
errorMessage: "Something went wrong. Please try again.", errorMessage: "Something went wrong. Please try again.",
}, },
legalPage: { legalPage: {
reviewNotice: "[PLACEHOLDER — must be reviewed by a lawyer before publication]", reviewNotice: "",
}, },
notFoundPage: { notFoundPage: {
eyebrow: "404", eyebrow: "404",
@@ -231,13 +231,13 @@ export const en: Dictionary = {
{ {
heading: "1. Data Controller", heading: "1. Data Controller",
paragraphs: [ paragraphs: [
"If legally required (e.g. for extensive processing of special categories of data, or where more than 20 people are constantly involved in the automated processing of personal data, § 38 BDSG), we name a data protection officer here: [PLACEHOLDER — name and contact details, if applicable].", "Based on the size and nature of our business, we do not believe we are required to appoint a data protection officer under § 38 BDSG. For any data protection questions, please use the contact address given in our legal notice.",
], ],
}, },
{ {
heading: "2. Hosting", heading: "2. Hosting",
paragraphs: [ paragraphs: [
"Our website is hosted by an external hosting provider: [PLACEHOLDER — enter the hosting provider's name and address]. We have a data processing agreement with this provider pursuant to Art. 28 GDPR. On our behalf, the hosting provider processes in particular the data collected in the server log files (see item 3) as well as all data entered via this website.", "This website is hosted on our own, self-operated server infrastructure — not by an external hosting provider. There is therefore no data processing agreement with an external hosting provider under Art. 28 GDPR; the server log files described in item 3 are processed exclusively by us as the data controller.",
], ],
}, },
{ {