Datenschutzerklaerung v0.3 eingebaut, Cookie-Seite zurueckgebaut

- Datenschutz: vollstaendige v0.3 aus docs/legal, host-aware Bausteine
  (Hub: Kundenkonto/Login-Magic-Link/Stripe; Spokes: Medienprivileg,
  Newsroom, Aenderungslink-Variante); Systemwerte aufgeloest (Magic-Link
  15 Min. aus MagicLinkGenerator, Logs 14 Tage, Stripe Payments Europe);
  ersetzt den Platzhalter samt falscher Google-Analytics-Behauptung
- Cookie-Seite raus (Cookies stehen in Abschnitt 4 der Datenschutz-
  erklaerung, kein Banner noetig): Route -> 301 auf /datenschutz,
  Legacy-Alias cookies.html -> datenschutz, Footer + Sitemap bereinigt

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-03 16:17:59 +00:00
parent efe7f86b4e
commit 99ab47ba1f
10 changed files with 563 additions and 200 deletions

View file

@ -25,13 +25,13 @@ class SitemapController extends Controller
/** @var list<string> */ /** @var list<string> */
private const HUB_PAGES = [ private const HUB_PAGES = [
'faq', 'hilfe', 'api', 'kuendigung', 'faq', 'hilfe', 'api', 'kuendigung',
'impressum', 'datenschutz', 'agb', 'cookies', 'richtlinien', 'melden', 'impressum', 'datenschutz', 'agb', 'richtlinien', 'melden',
]; ];
/** @var list<string> */ /** @var list<string> */
private const PORTAL_PAGES = [ private const PORTAL_PAGES = [
'preise', 'veroeffentlichen', 'newsrooms', 'faq', 'hilfe', 'api', 'preise', 'veroeffentlichen', 'newsrooms', 'faq', 'hilfe', 'api',
'impressum', 'datenschutz', 'agb', 'cookies', 'richtlinien', 'melden', 'impressum', 'datenschutz', 'agb', 'richtlinien', 'melden',
]; ];
public function __invoke(Request $request): Response public function __invoke(Request $request): Response

View file

@ -66,7 +66,6 @@
<li><a href="{{ route('richtlinien', ['edition' => 'de']) }}" class="hover:text-white transition-colors">Veröffentlichungsrichtlinien</a></li> <li><a href="{{ route('richtlinien', ['edition' => 'de']) }}" class="hover:text-white transition-colors">Veröffentlichungsrichtlinien</a></li>
<li><a href="{{ route('melden', ['edition' => 'de']) }}" class="hover:text-white transition-colors">Inhalte melden</a></li> <li><a href="{{ route('melden', ['edition' => 'de']) }}" class="hover:text-white transition-colors">Inhalte melden</a></li>
<li><a href="{{ route('datenschutz', ['edition' => 'de']) }}" class="hover:text-white transition-colors">Datenschutz</a></li> <li><a href="{{ route('datenschutz', ['edition' => 'de']) }}" class="hover:text-white transition-colors">Datenschutz</a></li>
<li><a href="{{ route('cookies', ['edition' => 'de']) }}" class="hover:text-white transition-colors">Cookies</a></li>
</ul> </ul>
{{-- Selfservice-Kündigung ohne Login (Entscheidung E2/T3neu: B2B-only, {{-- Selfservice-Kündigung ohne Login (Entscheidung E2/T3neu: B2B-only,
der Button bleibt freiwillig über den B2B-Standard hinaus erhalten; der Button bleibt freiwillig über den B2B-Standard hinaus erhalten;

View file

@ -78,7 +78,6 @@
<a href="{{ route('agb') }}" class="cursor-pointer hover:text-white transition-colors">AGB</a> <a href="{{ route('agb') }}" class="cursor-pointer hover:text-white transition-colors">AGB</a>
<a href="{{ route('richtlinien') }}" class="cursor-pointer hover:text-white transition-colors">Richtlinien</a> <a href="{{ route('richtlinien') }}" class="cursor-pointer hover:text-white transition-colors">Richtlinien</a>
<a href="{{ route('melden') }}" class="cursor-pointer hover:text-white transition-colors">Inhalte melden</a> <a href="{{ route('melden') }}" class="cursor-pointer hover:text-white transition-colors">Inhalte melden</a>
<a href="{{ route('cookies') }}" class="cursor-pointer hover:text-white transition-colors">Cookies</a>
<a href="{{ route('datenschutz') }}" class="cursor-pointer hover:text-white transition-colors">Datenschutz</a> <a href="{{ route('datenschutz') }}" class="cursor-pointer hover:text-white transition-colors">Datenschutz</a>
</span> </span>
</div> </div>

View file

@ -1,120 +0,0 @@
@extends('web.layouts.web-master')
@section('title', 'Cookie-Richtlinien')
@section('meta_description', 'Informationen zu den auf dieser Website eingesetzten Cookies und deren Verwaltung.')
@section('content')
<x-web.static-page
eyebrow="Rechtliches"
title="Cookie-Richtlinien"
breadcrumb="Cookies"
updated="Stand: Januar 2025"
>
{{-- Platzhalter-Text — vor Go-Live an das echte Cookie-/Consent-Setup anpassen. --}}
<div class="pm-body max-w-[760px]">
<h2>Was sind Cookies?</h2>
<p>
Cookies sind kleine Textdateien, die auf Ihrem Computer oder mobilen Gerät gespeichert werden, wenn
Sie eine Website besuchen. Sie ermöglichen es der Website, Ihr Gerät zu erkennen und bestimmte
Informationen über Ihre Nutzung zu speichern.
</p>
<p>
Wir verwenden Cookies, um Ihnen ein optimales Nutzungserlebnis zu bieten und unsere Website
kontinuierlich zu verbessern.
</p>
<h2>Welche Cookies verwenden wir?</h2>
<h3>1. Notwendige Cookies</h3>
<p>
Diese Cookies sind für den Betrieb der Website unbedingt erforderlich und können nicht deaktiviert
werden. Beispiele:
</p>
<ul>
<li>Session-Cookies (Anmeldung)</li>
<li>Sicherheits-Cookies (CSRF-Schutz)</li>
<li>Cookie-Einwilligungs-Cookies</li>
</ul>
<h3>2. Funktionale Cookies</h3>
<p>Diese Cookies ermöglichen erweiterte Funktionalitäten und Personalisierung. Beispiele:</p>
<ul>
<li>Spracheinstellungen</li>
<li>Dark-Mode-Präferenzen</li>
<li>Gespeicherte Filtereinstellungen</li>
</ul>
<h3>3. Analytische Cookies</h3>
<p>Diese Cookies helfen uns zu verstehen, wie Besucher mit unserer Website interagieren. Dienste:</p>
<ul>
<li>Google Analytics (anonymisiert)</li>
<li>Interne Analysetools</li>
</ul>
<h3>4. Marketing-Cookies</h3>
<p>Diese Cookies werden verwendet, um Ihnen relevante Werbung anzuzeigen. Beispiele:</p>
<ul>
<li>Remarketing-Cookies</li>
<li>Social Media Tracking</li>
</ul>
</div>
{{-- Cookie-Laufzeiten als editoriale Tabelle (außerhalb .pm-body für klare Rahmung). --}}
<div class="max-w-[760px] mt-8">
<h2 class="font-serif text-[22px] font-semibold tracking-[-0.3px] text-ink m-0 mb-4">Cookie-Laufzeiten</h2>
<div class="border border-bg-rule overflow-hidden">
<table class="w-full text-[13px] border-collapse">
<thead>
<tr class="text-left text-ink-3 bg-bg-elev border-b border-bg-rule">
<th class="font-medium px-4 py-2.5">Cookie-Typ</th>
<th class="font-medium px-4 py-2.5">Laufzeit</th>
</tr>
</thead>
<tbody class="divide-y divide-bg-rule">
<tr>
<td class="px-4 py-2.5 text-ink-2">Session-Cookies</td>
<td class="px-4 py-2.5 text-ink-2">Bis zum Schließen des Browsers</td>
</tr>
<tr>
<td class="px-4 py-2.5 text-ink-2">Funktionale Cookies</td>
<td class="px-4 py-2.5 text-ink-2">1 Jahr</td>
</tr>
<tr>
<td class="px-4 py-2.5 text-ink-2">Analytische Cookies</td>
<td class="px-4 py-2.5 text-ink-2">2 Jahre</td>
</tr>
<tr>
<td class="px-4 py-2.5 text-ink-2">Marketing-Cookies</td>
<td class="px-4 py-2.5 text-ink-2">1 Jahr</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="pm-body max-w-[760px] mt-8">
<h2>Wie können Sie Cookies verwalten?</h2>
<p>Sie können Ihre Cookie-Einstellungen jederzeit ändern. Die meisten Browser erlauben es Ihnen:</p>
<ul>
<li>Cookies anzuzeigen und zu löschen</li>
<li>Cookies von Drittanbietern zu blockieren</li>
<li>Alle Cookies zu blockieren</li>
<li>Cookies beim Schließen des Browsers zu löschen</li>
</ul>
<p>
Bitte beachten Sie, dass das Deaktivieren von Cookies die Funktionalität unserer Website
beeinträchtigen kann.
</p>
<h2>Weitere Informationen</h2>
<p>
Weitere Informationen zum Datenschutz finden Sie in unserer
<a href="{{ route('datenschutz') }}">Datenschutzerklärung</a>.
</p>
<p>
Bei Fragen zu unseren Cookie-Richtlinien kontaktieren Sie uns bitte unter:
<a href="mailto:datenschutz@businessportal.de">datenschutz@businessportal.de</a>
</p>
</div>
</x-web.static-page>
@endsection

View file

@ -1,98 +1,552 @@
@extends('web.layouts.web-master') @extends('web.layouts.web-master')
@section('title', 'Datenschutzerklärung') @section('title', 'Datenschutzerklärung')
@section('meta_description', 'Informationen zur Verarbeitung personenbezogener Daten auf dieser Website.') @section('meta_description', 'Informationen zur Verarbeitung personenbezogener Daten: Hosting, Kundenkonto, Zahlungsabwicklung, Inhaltsprüfung, Meldeverfahren und Ihre Rechte.')
@php
// Datenschutzerklärung v0.3 (docs/legal, 03.07.2026) — Bausteine je Host:
// Hub rendert Kundenkonto/Stripe/Login-Variante, die Spokes die
// Portal-Bausteine (Medienprivileg, Newsroom, Änderungslink-Variante).
// Systemwerte: Magic-Link-TTL 15 Min. (MagicLinkGenerator::createLoginLink).
$host = request()->getHost();
$isHub = str_contains($host, 'pressekonto');
$brandKey = $isHub ? 'pressekonto' : (str_contains($host, 'presseecho') ? 'presseecho' : 'businessportal24');
$brand = config('domains.domains.'.$brandKey.'.brand', []);
$portalName = ($brand['name'] ?? '').($brand['accent'] ?? '');
$contactEmail = $brand['contact_email'] ?? 'info@businessportal24.com';
$reportEmail = $brand['report_email'] ?? $contactEmail;
$hubUrl = rtrim((string) config('domains.domain_portal_url', config('app.url')), '/');
$hubLabel = str_replace(['https://', 'http://'], '', $hubUrl);
$magicLinkTtl = '15 Minuten';
@endphp
@section('content') @section('content')
<x-web.static-page <x-web.static-page
eyebrow="Rechtliches" eyebrow="Rechtliches"
title="Datenschutzerklärung" title="Datenschutzerklärung"
breadcrumb="Datenschutz" breadcrumb="Datenschutz"
updated="Stand: Januar 2025" updated="Stand: 3. Juli 2026 · Version 0.3"
> >
{{-- Platzhalter-Text — vor Go-Live durch die finale Datenschutzerklärung ersetzen. --}}
<div class="pm-body max-w-[760px]"> <div class="pm-body max-w-[760px]">
<h2>1. Datenschutz auf einen Blick</h2> <h2>1. Verantwortlicher</h2>
<h3>Allgemeine Hinweise</h3> <p>Verantwortlicher für die Datenverarbeitung auf {{ $host }} ist:</p>
<p> <p>
Die folgenden Hinweise geben einen einfachen Überblick darüber, was mit Ihren personenbezogenen adametz.media<br>
Daten passiert, wenn Sie diese Website besuchen. Personenbezogene Daten sind alle Daten, mit denen Inhaber: Kevin Adametz<br>
Sie persönlich identifiziert werden können. In der Lake 4<br>
33739 Bielefeld<br>
E-Mail: <a href="mailto:{{ $contactEmail }}">{{ $contactEmail }}</a>
</p> </p>
<h3>Datenerfassung auf dieser Website</h3> <h2>2. Grundsätze und Rechtsgrundlagen</h2>
<p> <p>
<strong>Wer ist verantwortlich für die Datenerfassung auf dieser Website?</strong><br> Wir verarbeiten personenbezogene Daten nur, soweit dies für den Betrieb dieses Angebots,
Die Datenverarbeitung auf dieser Website erfolgt durch den Websitebetreiber. Dessen Kontaktdaten die Erbringung unserer Leistungen, die Bearbeitung von Anfragen oder aufgrund gesetzlicher
können Sie dem Abschnitt „Hinweis zur Verantwortlichen Stelle" in dieser Datenschutzerklärung Pflichten erforderlich ist.
entnehmen.
</p> </p>
<h2>2. Hosting</h2>
<p>Wir hosten die Inhalte unserer Website bei folgenden Anbietern:</p>
<h3>Externes Hosting</h3>
<p> <p>
Diese Website wird extern gehostet. Die personenbezogenen Daten, die auf dieser Website erfasst Die jeweilige Rechtsgrundlage nennen wir in den einzelnen Abschnitten dieser
werden, werden auf den Servern des Hosters / der Hoster gespeichert. Hierbei kann es sich v. a. um Datenschutzerklärung. Je nach Verarbeitung kommen insbesondere folgende Rechtsgrundlagen in
IP-Adressen, Kontaktanfragen, Meta- und Kommunikationsdaten, Vertragsdaten, Kontaktdaten, Namen, Betracht:
Websitezugriffe und sonstige Daten, die über eine Website generiert werden, handeln.
</p>
<h2>3. Allgemeine Hinweise und Pflichtinformationen</h2>
<h3>Datenschutz</h3>
<p>
Die Betreiber dieser Seiten nehmen den Schutz Ihrer persönlichen Daten sehr ernst. Wir behandeln
Ihre personenbezogenen Daten vertraulich und entsprechend den gesetzlichen Datenschutzvorschriften
sowie dieser Datenschutzerklärung.
</p>
<h2>4. Datenerfassung auf dieser Website</h2>
<h3>Cookies</h3>
<p>
Unsere Internetseiten verwenden so genannte „Cookies". Cookies sind kleine Datenpakete und richten
auf Ihrem Endgerät keinen Schaden an. Sie werden entweder vorübergehend für die Dauer einer Sitzung
(Session-Cookies) oder dauerhaft (permanente Cookies) auf Ihrem Endgerät gespeichert.
</p>
<h3>Server-Log-Dateien</h3>
<p>
Der Provider der Seiten erhebt und speichert automatisch Informationen in so genannten
Server-Log-Dateien, die Ihr Browser automatisch an uns übermittelt. Dies sind:
</p> </p>
<ul> <ul>
<li>Browsertyp und Browserversion</li> <li>Art. 6 Abs. 1 lit. b DSGVO, soweit die Verarbeitung zur Erfüllung eines Vertrags oder zur Durchführung vorvertraglicher Maßnahmen erforderlich ist,</li>
<li>verwendetes Betriebssystem</li> <li>Art. 6 Abs. 1 lit. c DSGVO, soweit wir rechtlich zur Verarbeitung verpflichtet sind,</li>
<li>Referrer URL</li> <li>Art. 6 Abs. 1 lit. f DSGVO, soweit die Verarbeitung zur Wahrung berechtigter Interessen erforderlich ist,</li>
<li>Hostname des zugreifenden Rechners</li> <li>Art. 85 DSGVO in Verbindung mit den jeweils anwendbaren medien- und presserechtlichen Sonderregelungen, soweit personenbezogene Daten zu journalistisch-redaktionellen Zwecken verarbeitet werden.</li>
<li>Uhrzeit der Serveranfrage</li>
<li>IP-Adresse</li>
</ul> </ul>
<h2>5. Analyse-Tools und Werbung</h2>
<h3>Google Analytics</h3>
<p> <p>
Diese Website nutzt Funktionen des Webanalysedienstes Google Analytics. Anbieter ist die Google Eine Weitergabe personenbezogener Daten an Dritte erfolgt nur, wenn sie in dieser
Ireland Limited („Google"), Gordon House, Barrow Street, Dublin 4, Irland. Datenschutzerklärung beschrieben ist, wenn sie für die Leistungserbringung erforderlich
ist, wenn eine gesetzliche Pflicht besteht oder wenn Sie eingewilligt haben.
</p> </p>
<p>Wir verkaufen keine personenbezogenen Daten und schalten keine personalisierte Werbung.</p>
<p>Die Übertragung dieser Website erfolgt verschlüsselt über TLS.</p>
<h2>6. Newsletter</h2> <h2>3. Hosting und Server-Logs</h2>
<h3>Newsletterdaten</h3>
<p> <p>
Wenn Sie den auf der Website angebotenen Newsletter beziehen möchten, benötigen wir von Ihnen eine Unsere Systeme werden bei der Hetzner Online GmbH, Industriestr. 25, 91710 Gunzenhausen,
E-Mail-Adresse sowie Informationen, welche uns die Überprüfung gestatten, dass Sie der Inhaber der Deutschland, betrieben. Mit Hetzner besteht ein Vertrag zur Auftragsverarbeitung gemäß
angegebenen E-Mail-Adresse sind und mit dem Empfang des Newsletters einverstanden sind. Art. 28 DSGVO.
</p>
<p>
Beim Aufruf unserer Seiten verarbeitet der Webserver technisch notwendige Verbindungsdaten.
Dazu gehören insbesondere:
</p> </p>
<h2>7. Ihre Rechte</h2>
<p>Sie haben folgende Rechte:</p>
<ul> <ul>
<li>Recht auf Auskunft über Ihre gespeicherten personenbezogenen Daten</li> <li>IP-Adresse,</li>
<li>Recht auf Berichtigung unrichtiger Daten</li> <li>Zeitpunkt des Aufrufs,</li>
<li>Recht auf Löschung Ihrer Daten</li> <li>aufgerufene Seite,</li>
<li>Recht auf Einschränkung der Datenverarbeitung</li> <li>übertragene Datenmenge,</li>
<li>Recht auf Datenübertragbarkeit</li> <li>Referrer-URL,</li>
<li>Widerspruchsrecht gegen die Datenverarbeitung</li> <li>User-Agent,</li>
<li>Beschwerderecht bei einer Aufsichtsbehörde</li> <li>technische Statuscodes.</li>
</ul> </ul>
<p>
Die Verarbeitung erfolgt zur Bereitstellung, Sicherheit, Stabilität und Fehleranalyse
unseres Angebots. Rechtsgrundlage ist Art. 6 Abs. 1 lit. f DSGVO.
</p>
<p>
Die Server-Logs werden grundsätzlich nach 14 Tagen gelöscht, sofern kein
sicherheitsrelevanter Vorfall oder eine rechtliche Pflicht eine längere Aufbewahrung
erforderlich macht.
</p>
<h2>4. Cookies und technisch notwendige Speicherungen</h2>
<p>Wir verwenden keine Marketing-Cookies und keine Tracking-Cookies.</p>
@if ($isHub)
<p>
Auf {{ $hubLabel }} werden ausschließlich technisch notwendige Cookies und
vergleichbare Speichertechnologien eingesetzt. Dazu gehören insbesondere
Sitzungs-Cookies für den Login, Sicherheits-Token und technisch erforderliche
Speicherungen für das Kundenkonto. Diese sind für den Betrieb des Kundenkontos und die
Bereitstellung der von Ihnen angeforderten Funktionen erforderlich. Rechtsgrundlagen
sind § 25 Abs. 2 Nr. 2 TDDDG und Art. 6 Abs. 1 lit. b DSGVO. Die Cookies und Token
werden mit Ende der Sitzung oder nach kurzer Frist gelöscht.
</p>
@else
<p>
Auf {{ $host }} setzen wir keine Marketing- oder Tracking-Cookies ein. Soweit technisch
notwendige Speicherungen erforderlich sind, dienen sie ausschließlich dem sicheren
Betrieb der Website oder der Bereitstellung ausdrücklich angeforderter Funktionen.
</p>
@endif
<p>
Da wir keine Marketing- oder Tracking-Cookies einsetzen, ist für diese Website kein
Cookie-Banner erforderlich.
</p>
<h2>5. Webanalyse mit Umami</h2>
<p>Wir nutzen die selbst gehostete Analysesoftware Umami auf eigenen Servern.</p>
<p>
Umami setzt keine Cookies in Ihrem Browser. Es findet kein website- oder
geräteübergreifendes Tracking statt. Es werden keine Nutzerprofile erstellt.
</p>
<p>
Bei der Erfassung werden IP-Adressen unmittelbar vollständig anonymisiert. Ein Rückschluss
auf Ihre Person oder Ihr genaues Gerät ist dadurch ausgeschlossen.
</p>
<p>Verarbeitet werden ausschließlich aggregierte Nutzungsdaten, insbesondere:</p>
<ul>
<li>Seitenaufrufe,</li>
<li>Referrer,</li>
<li>Gerätetyp,</li>
<li>Browser,</li>
<li>Betriebssystem,</li>
<li>ungefährer Standort auf Länderebene.</li>
</ul>
<p>
Die Verarbeitung erfolgt zur Reichweitenmessung, technischen Optimierung und Verbesserung
unseres Angebots. Rechtsgrundlage ist Art. 6 Abs. 1 lit. f DSGVO. Eine Übermittlung der
Analysedaten an externe Tracking- oder Werbedienstleister findet nicht statt.
</p>
<h2>6. Kontaktaufnahme</h2>
<p>
Wenn Sie uns per E-Mail oder über ein Formular kontaktieren, verarbeiten wir die von Ihnen
angegebenen Daten zur Bearbeitung Ihrer Anfrage. Dazu können insbesondere gehören:
</p>
<ul>
<li>Name,</li>
<li>E-Mail-Adresse,</li>
<li>Inhalt Ihrer Nachricht,</li>
<li>betroffene URL,</li>
<li>Zeitpunkt der Anfrage,</li>
<li>technische Metadaten zur Missbrauchsvermeidung und Sicherheit.</li>
</ul>
<p>
Rechtsgrundlage ist Art. 6 Abs. 1 lit. b DSGVO, soweit Ihre Anfrage mit einem Vertrag oder
vorvertraglichen Maßnahmen zusammenhängt. In allen anderen Fällen ist Rechtsgrundlage
Art. 6 Abs. 1 lit. f DSGVO. Soweit wir gesetzlich zur Bearbeitung oder Dokumentation
verpflichtet sind, ist Rechtsgrundlage Art. 6 Abs. 1 lit. c DSGVO.
</p>
<p>
Die Daten werden gelöscht, sobald die Anfrage abgeschlossen ist und keine gesetzlichen
Aufbewahrungspflichten oder berechtigten Interessen an einer weiteren Speicherung
entgegenstehen.
</p>
@if ($isHub)
<h2>7. Kundenkonto und Registrierung auf dem Hub</h2>
<p>Für die Nutzung von pressekonto ist ein Kundenkonto erforderlich. Dabei verarbeiten wir insbesondere:</p>
<ul>
<li>Name,</li>
<li>E-Mail-Adresse,</li>
<li>Unternehmensangaben,</li>
<li>Rechnungsdaten,</li>
<li>steuerlich erforderliche Angaben,</li>
<li>Angaben zu Firmenprofilen,</li>
<li>Buchungsdaten,</li>
<li>Tarifinformationen,</li>
<li>Zahlungsstatus,</li>
<li>eingereichte Pressemitteilungen,</li>
<li>Entwürfe,</li>
<li>Kontingente,</li>
<li>Credits,</li>
<li>Nutzungs- und Verwaltungsdaten des Kundenkontos.</li>
</ul>
<p>Rechtsgrundlage ist Art. 6 Abs. 1 lit. b DSGVO.</p>
<p>
Unser Angebot richtet sich ausschließlich an Unternehmer. Bei der Buchung bestätigen
Sie, dass Sie in Ausübung Ihrer gewerblichen oder selbständigen beruflichen Tätigkeit
handeln (§ 14 BGB). Diese Bestätigung protokollieren wir zu Nachweiszwecken.
</p>
<p>
Ihre bei Vertragsschluss akzeptierte AGB-Fassung sowie im Veröffentlichungsvorgang
abgegebene Erklärungen und Bestätigungen, zum Beispiel der Hinweis auf die dauerhafte
Archivierung, protokollieren wir ebenfalls zu Nachweiszwecken. Rechtsgrundlagen sind
Art. 6 Abs. 1 lit. c und lit. f DSGVO.
</p>
<h2>8. Magic-Link: Anmeldung bei pressekonto</h2>
<p>
Die Anmeldung bei pressekonto kann passwortlos über einen zeitlich begrenzten
Anmeldelink („Magic-Link") erfolgen, den wir an Ihre hinterlegte E-Mail-Adresse senden.
</p>
<p>Verarbeitet werden:</p>
<ul>
<li>E-Mail-Adresse,</li>
<li>ein kryptographisch gehashtes Token,</li>
<li>Zeitstempel,</li>
<li>technische Metadaten zur Sicherheit und Missbrauchsvermeidung.</li>
</ul>
<p>
Das Token ist nur zeitlich begrenzt gültig und verfällt nach einmaliger Nutzung oder
nach Ablauf einer kurzen Gültigkeitsdauer automatisch. Die konkrete Gültigkeitsdauer
wird systemseitig festgelegt und beträgt derzeit {{ $magicLinkTtl }}.
</p>
<p>Rechtsgrundlage ist Art. 6 Abs. 1 lit. b DSGVO.</p>
<h2>9. Zahlungsabwicklung mit Stripe</h2>
<p>Zahlungen auf {{ $hubLabel }} werden über den Zahlungsdienstleister Stripe abgewickelt:</p>
<p>Stripe Payments Europe, Ltd., 1 Grand Canal Street Lower, Grand Canal Dock, Dublin, Irland.</p>
<p>Stripe erhält die für die Zahlungsabwicklung erforderlichen Daten, insbesondere:</p>
<ul>
<li>Name,</li>
<li>E-Mail-Adresse,</li>
<li>Rechnungsdaten,</li>
<li>Zahlungsmittel,</li>
<li>Betrag,</li>
<li>Zahlungsstatus,</li>
<li>technische Zahlungsinformationen.</li>
</ul>
<p>
Ihre vollständigen Zahlungsdaten, zum Beispiel vollständige Kreditkartennummern, werden
direkt von Stripe über ein gesichertes Eingabefeld erfasst und verarbeitet. Sie
berühren unsere Server zu keinem Zeitpunkt und liegen uns nicht vor.
</p>
<p>Rechtsgrundlage ist Art. 6 Abs. 1 lit. b DSGVO.</p>
<p>
Stripe verarbeitet personenbezogene Daten in eigener Verantwortung, soweit dies für die
Zahlungsabwicklung, Betrugsprävention, Compliance und gesetzliche Pflichten
erforderlich ist. Soweit Stripe personenbezogene Daten in Drittländern verarbeitet,
erfolgt dies nach Angaben von Stripe auf Grundlage geeigneter Garantien, insbesondere
EU-Standardvertragsklauseln und — soweit anwendbar — des EU-U.S. Data Privacy
Framework.
</p>
<p>Weitere Informationen finden Sie in den Datenschutzhinweisen von Stripe.</p>
@else
<h2>7. Magic-Link: Änderungslinks für Pressekontakte und berechtigte Personen</h2>
<p>
Als in einer Pressemitteilung genannter Pressekontakt, ursprünglicher Auftraggeber,
Firmeninhaber oder sonst berechtigte Person können Sie Änderungen über einen zeitlich
begrenzten Änderungslink beantragen. Der Link wird an die in der Pressemitteilung oder
im Kundenkonto hinterlegte E-Mail-Adresse gesendet.
</p>
<p>Verarbeitet werden:</p>
<ul>
<li>E-Mail-Adresse,</li>
<li>ein kryptographisch gehashtes Token,</li>
<li>Zeitstempel,</li>
<li>betroffene Pressemitteilung,</li>
<li>beantragte Änderung,</li>
<li>technische Metadaten zur Sicherheit und Missbrauchsvermeidung.</li>
</ul>
<p>
Das Token ist nur zeitlich begrenzt gültig und verfällt nach einmaliger Nutzung oder
nach Ablauf einer kurzen Gültigkeitsdauer automatisch. Die konkrete Gültigkeitsdauer
wird systemseitig festgelegt und beträgt derzeit {{ $magicLinkTtl }}.
</p>
<p>
Rechtsgrundlagen sind je nach Vorgang Art. 6 Abs. 1 lit. b DSGVO, Art. 6 Abs. 1 lit. c
DSGVO und Art. 6 Abs. 1 lit. f DSGVO. Die Verarbeitung dient insbesondere der sicheren
Zuordnung berechtigter Änderungsanfragen, der Vertragsdurchführung, der Bearbeitung
gesetzlicher Rechte und der Vermeidung von Missbrauch.
</p>
@endif
<h2>{{ $isHub ? '10' : '8' }}. Automatisierte Inhaltsprüfung und Qualitätsbewertung</h2>
<p>
Eingereichte Pressemitteilungen werden vor der Veröffentlichung automatisiert auf die
Einhaltung unserer Veröffentlichungsrichtlinien geprüft und inhaltlich bewertet.
</p>
<p>
Dabei können auch personenbezogene Daten verarbeitet werden, die in der Pressemitteilung
enthalten sind. Soweit möglich, werden personenbezogene Daten vor der automatisierten
Analyse minimiert oder entfernt. API-Anbindungen werden, soweit verfügbar, so konfiguriert,
dass die übermittelten Inhalte nicht für Trainingszwecke fremder Modelle verwendet werden.
</p>
<p>
Für die automatisierte Analyse können je nach Anfrage, Tätigkeit und Verfügbarkeit
unterschiedliche KI- oder Analyse-Anbieter eingesetzt werden. Derzeit kommen insbesondere
folgende Anbieter in Betracht:
</p>
<ul>
<li>OpenAI,</li>
<li>Google Gemini,</li>
<li>Anthropic Claude.</li>
</ul>
<p>Verarbeitet werden insbesondere:</p>
<ul>
<li>Inhalt der eingereichten Pressemitteilung,</li>
<li>minimierte oder anonymisierte Prüffassung, soweit technisch möglich,</li>
<li>Bewertungsergebnis,</li>
<li>Scores oder Risikomerkmale,</li>
<li>Ablehnungskategorien,</li>
<li>interne Hinweise zur Qualitätsbewertung,</li>
<li>Ergebnis einer gegebenenfalls durchgeführten menschlichen Überprüfung.</li>
</ul>
<p>
Führt die Prüfung zur Ablehnung einer Mitteilung, teilen wir Ihnen die Ablehnungskategorie
mit. Sie können eine Überprüfung durch einen Menschen verlangen und dabei Ihren Standpunkt
darlegen. Die Entscheidung wird dann erneut geprüft.
</p>
<p>
Die Prüfergebnisse, Scores, Ablehnungskategorien und Begründungen werden intern der
jeweiligen Pressemitteilung zugeordnet und grundsätzlich so lange gespeichert, wie die
Pressemitteilung gespeichert oder veröffentlicht bleibt. Dies dient der Nachvollziehbarkeit
der Veröffentlichungsentscheidung, der Qualitätssicherung, der Bearbeitung von Rückfragen
sowie der Rechtsverteidigung.
</p>
<p>
Rechtsgrundlagen sind Art. 6 Abs. 1 lit. b DSGVO und Art. 6 Abs. 1 lit. f DSGVO. Soweit
gesetzliche Dokumentationspflichten bestehen oder Meldungen nach dem Digital Services Act
betroffen sind, kann zusätzlich Art. 6 Abs. 1 lit. c DSGVO einschlägig sein.
</p>
@unless ($isHub)
<h2>9. Veröffentlichte Pressemitteilungen und Medienprivileg</h2>
<p>
Die auf {{ $portalName }} veröffentlichten Pressemitteilungen sind öffentlich
zugängliche Presseinhalte und Teil eines dauerhaften Archivs. In Pressemitteilungen
können personenbezogene Daten enthalten sein, zum Beispiel:
</p>
<ul>
<li>Namen von Ansprechpartnern,</li>
<li>berufliche Kontaktdaten,</li>
<li>Zitate,</li>
<li>Funktionen im Unternehmen,</li>
<li>Personalien,</li>
<li>Bildmaterial,</li>
<li>sonstige Angaben mit Personenbezug.</li>
</ul>
<p>
Soweit die Verarbeitung zu journalistisch-redaktionellen Zwecken erfolgt, gelten die
hierfür vorgesehenen Sonderregeln nach Art. 85 DSGVO in Verbindung mit dem jeweils
anwendbaren Medien- und Presserecht. Für den Verantwortlichen mit Sitz in
Nordrhein-Westfalen kommen insbesondere § 57 Abs. 1 Medienstaatsvertrag (MStV) sowie
die einschlägigen Regelungen des Pressegesetzes für das Land Nordrhein-Westfalen in
Betracht.
</p>
<p>
Durch die medien- und presserechtlichen Sonderregeln können einzelne Betroffenenrechte
eingeschränkt sein, soweit dies zur Wahrung der Meinungs- und Informationsfreiheit, der
Pressefreiheit und der Archivfunktion erforderlich ist. Dies bedeutet nicht, dass
Betroffenenrechte ausgeschlossen sind. Wir prüfen entsprechende Anfragen im Einzelfall.
</p>
<p>
Unabhängig davon können Sie jederzeit die Entfernung, Aktualisierung oder
Anonymisierung Ihrer persönlichen Kontaktdaten als natürliche Person beantragen. Auch
Meldungen rechtswidriger Inhalte sind jederzeit kostenlos möglich. Die dafür
vorgesehenen Wege finden Sie unter: <a href="{{ route('melden') }}">{{ $host }}/de/melden</a>.
</p>
<p>
Angaben über juristische Personen, zum Beispiel GmbH oder AG, sind grundsätzlich keine
personenbezogenen Daten im Sinne der DSGVO. Enthalten Angaben über Unternehmen zugleich
Informationen über natürliche Personen, prüfen wir Betroffenenanfragen im Einzelfall.
</p>
<p>
Informationen aus öffentlichen Registern, zum Beispiel dem Handelsregister,
berücksichtigen wir bei dieser Prüfung entsprechend ihrer gesetzlichen
Publizitätsfunktion.
</p>
<h2>10. Newsroom und Firmenprofile</h2>
<p>
Zu jedem veröffentlichenden Unternehmen kann ein öffentliches Firmenprofil („Newsroom")
mit den vom Kunden bereitgestellten Angaben und dessen Pressemitteilungen angezeigt
werden.
</p>
<p>Dabei können insbesondere verarbeitet und veröffentlicht werden:</p>
<ul>
<li>Unternehmensname,</li>
<li>Logo,</li>
<li>Beschreibung,</li>
<li>Anschrift oder Standortangaben,</li>
<li>Website,</li>
<li>Branchenangaben,</li>
<li>Ansprechpartner,</li>
<li>berufliche Kontaktdaten,</li>
<li>veröffentlichte Pressemitteilungen.</li>
</ul>
<p>
Verantwortlich für die inhaltlichen Angaben ist das jeweilige veröffentlichende
Unternehmen. Die Verarbeitung durch uns erfolgt zur Vertragsdurchführung nach Art. 6
Abs. 1 lit. b DSGVO sowie, soweit einschlägig, zu journalistisch-redaktionellen
Zwecken nach dem vorstehenden Abschnitt.
</p>
<p>
Soweit Firmenprofile personenbezogene Daten enthalten, zum Beispiel Ansprechpartner
oder Kontaktdaten, gelten die Hinweise aus dem vorstehenden Abschnitt entsprechend.
</p>
@endunless
<h2>11. Meldeverfahren</h2>
<p>
Wenn Sie über unser Meldeverfahren einen Inhalt melden, eine Änderung beantragen oder
eigene personenbezogene Daten entfernen lassen möchten, verarbeiten wir die von Ihnen
angegebenen Daten zur Bearbeitung der Meldung oder Anfrage.
</p>
<p>Dabei können insbesondere verarbeitet werden:</p>
<ul>
<li>Name,</li>
<li>E-Mail-Adresse,</li>
<li>betroffene URL,</li>
<li>Begründung der Meldung,</li>
<li>ausgewählte Meldekategorie,</li>
<li>Nachweise oder ergänzende Angaben,</li>
<li>Zeitpunkt der Meldung,</li>
<li>Vorgangsnummer,</li>
<li>Bearbeitungsstatus,</li>
<li>Entscheidung und Begründung,</li>
<li>Kommunikationsverlauf.</li>
</ul>
<p>
Die Verarbeitung erfolgt zur Bearbeitung Ihrer Meldung, zur Erfüllung gesetzlicher
Pflichten, insbesondere nach dem Digital Services Act und der DSGVO, zur Dokumentation der
Entscheidung sowie zur Rechtsverteidigung.
</p>
<p>
Rechtsgrundlagen sind Art. 6 Abs. 1 lit. c DSGVO und Art. 6 Abs. 1 lit. f DSGVO. Soweit
die Meldung mit einem bestehenden Vertrag oder Kundenkonto zusammenhängt, kann zusätzlich
Art. 6 Abs. 1 lit. b DSGVO einschlägig sein.
</p>
<p>
Meldedaten bewahren wir zur Dokumentation der Bearbeitung und Entscheidung grundsätzlich
für drei Jahre nach Abschluss des Vorgangs auf. Eine längere Speicherung erfolgt nur,
soweit dies zur Bearbeitung laufender Vorgänge, zur Erfüllung gesetzlicher Pflichten oder
zur Rechtsverteidigung erforderlich ist.
</p>
<p>
Meldungen und Änderungsanfragen können über die auf den Portalen vorgesehenen Wege
(<a href="{{ route('melden') }}">Inhalte melden</a>) oder die Melde-Links bei der
jeweiligen Pressemitteilung eingereicht werden.
</p>
<p>
Für Rückfragen zu bestehenden Meldungen nutzen Sie bitte die Eingangsbestätigung oder
kontaktieren Sie uns über <a href="mailto:{{ $reportEmail }}">{{ $reportEmail }}</a>.
</p>
<h2>12. E-Mail-Versand</h2>
<p>Für den Versand transaktionaler E-Mails nutzen wir:</p>
<p>
ALL-INKL.COM - Neue Medien Münnich<br>
Inhaber: René Münnich<br>
Hauptstraße 68<br>
02742 Friedersdorf<br>
Deutschland
</p>
<p>Transaktionale E-Mails sind insbesondere:</p>
<ul>
<li>Magic-Links,</li>
<li>Änderungslinks,</li>
<li>Buchungsbestätigungen,</li>
<li>Rechnungen oder Rechnungshinweise,</li>
<li>Eingangsbestätigungen zu Meldungen,</li>
<li>Benachrichtigungen zu Veröffentlichungen,</li>
<li>System- und Sicherheitsmitteilungen.</li>
</ul>
<p>Dabei werden insbesondere verarbeitet:</p>
<ul>
<li>E-Mail-Adresse,</li>
<li>Empfängername, soweit vorhanden,</li>
<li>Inhalt der jeweiligen Nachricht,</li>
<li>Versandzeitpunkt,</li>
<li>technische Zustelldaten,</li>
<li>Statusinformationen zur Zustellung.</li>
</ul>
<p>
Rechtsgrundlagen sind je nach Zweck der jeweiligen E-Mail Art. 6 Abs. 1 lit. b DSGVO,
Art. 6 Abs. 1 lit. c DSGVO und Art. 6 Abs. 1 lit. f DSGVO.
</p>
<p>
Mit dem Dienstleister besteht, soweit erforderlich, ein Vertrag zur Auftragsverarbeitung
gemäß Art. 28 DSGVO.
</p>
<h2>13. Speicherdauer, Backups und Aufbewahrungspflichten</h2>
<p>
Wir speichern personenbezogene Daten nur so lange, wie es für die in dieser
Datenschutzerklärung genannten Zwecke erforderlich ist.
</p>
<p>Es gelten insbesondere folgende Speicherfristen:</p>
<ul>
<li>Server-Logs werden grundsätzlich nach 14 Tagen gelöscht, sofern kein sicherheitsrelevanter Vorfall eine längere Aufbewahrung erforderlich macht.</li>
<li>Magic-Link-Token verfallen nach einmaliger Nutzung oder nach Ablauf von {{ $magicLinkTtl }}.</li>
<li>Meldedaten werden grundsätzlich für drei Jahre nach Abschluss des Vorgangs gespeichert.</li>
<li>Vertrags-, Buchungs- und Rechnungsdaten unterliegen handels- und steuerrechtlichen Aufbewahrungspflichten und werden nach Ablauf dieser Fristen gelöscht.</li>
<li>Veröffentlichte Pressemitteilungen werden im Rahmen der Archivfunktion grundsätzlich dauerhaft gespeichert, soweit keine gesetzlichen Ansprüche auf Entfernung, Sperrung oder Änderung bestehen.</li>
<li>Kontodaten werden nach Kontolöschung entfernt, soweit keine Aufbewahrungspflichten, offenen Vorgänge oder berechtigten Interessen an einer weiteren Speicherung entgegenstehen.</li>
</ul>
<p>
Gelöschte Daten können in Sicherungskopien noch bis zu vier Wochen enthalten sein. Die
Backups werden ausschließlich zur Wiederherstellung der Systeme im Sicherungsfall verwendet
und nicht produktiv ausgewertet.
</p>
<h2>14. Ihre Rechte</h2>
<p>Sie haben gegenüber uns nach Maßgabe der gesetzlichen Voraussetzungen folgende Rechte:</p>
<ul>
<li>Recht auf Auskunft nach Art. 15 DSGVO,</li>
<li>Recht auf Berichtigung nach Art. 16 DSGVO,</li>
<li>Recht auf Löschung nach Art. 17 DSGVO,</li>
<li>Recht auf Einschränkung der Verarbeitung nach Art. 18 DSGVO,</li>
<li>Recht auf Datenübertragbarkeit nach Art. 20 DSGVO,</li>
<li>Recht auf Widerspruch gegen Verarbeitungen auf Grundlage berechtigter Interessen nach Art. 21 DSGVO,</li>
<li>Recht auf jederzeitigen Widerruf einer erteilten Einwilligung nach Art. 7 Abs. 3 DSGVO, ohne dass die Rechtmäßigkeit der aufgrund der Einwilligung bis zum Widerruf erfolgten Verarbeitung berührt wird.</li>
</ul>
@unless ($isHub)
<p>Für veröffentlichte Presseinhalte gelten die Besonderheiten aus Abschnitt 9.</p>
@endunless
<p>
Die Ausübung Ihrer Rechte ist grundsätzlich kostenlos. In den gesetzlich vorgesehenen
Ausnahmefällen, insbesondere bei offenkundig unbegründeten oder exzessiven Anträgen,
können wir nach Maßgabe von Art. 12 Abs. 5 DSGVO ein angemessenes Entgelt verlangen oder
die Bearbeitung ablehnen.
</p>
<p>
Wenn wir begründete Zweifel an Ihrer Identität oder Berechtigung haben, können wir
zusätzliche Informationen anfordern, die zur Bestätigung Ihrer Identität oder Berechtigung
erforderlich sind.
</p>
<p>
Zur Ausübung Ihrer Rechte können Sie uns kontaktieren unter:
<a href="mailto:{{ $contactEmail }}">{{ $contactEmail }}</a>
</p>
<p>
Für Inhalte auf den Portalen nutzen Sie bitte vorrangig das Melde- und Änderungsverfahren
unter: <a href="{{ route('melden') }}">{{ $host }}/de/melden</a>
</p>
<h2>15. Beschwerderecht</h2>
<p>Sie haben das Recht, sich bei einer Datenschutz-Aufsichtsbehörde zu beschweren.</p>
<p>Zuständig für uns ist:</p>
<p>
Landesbeauftragte für Datenschutz und Informationsfreiheit Nordrhein-Westfalen<br>
Kavalleriestraße 2–4<br>
40213 Düsseldorf<br>
Website: <a href="https://www.ldi.nrw.de" target="_blank" rel="noopener">www.ldi.nrw.de</a>
</p>
</div> </div>
</x-web.static-page> </x-web.static-page>
@endsection @endsection

View file

@ -132,13 +132,14 @@ $htmlRedirect = static function (string $edition, string $path) {
'karriere' => '', 'karriere' => '',
'kontakt' => '', 'kontakt' => '',
'ueber-uns' => '', 'ueber-uns' => '',
'cookies' => 'datenschutz',
]; ];
// Bereits saubere Zielpfade der neuen Struktur (Pfad bleibt erhalten). // Bereits saubere Zielpfade der neuen Struktur (Pfad bleibt erhalten).
$staticPages = [ $staticPages = [
'preise', 'faq', 'veroeffentlichen', 'preise', 'faq', 'veroeffentlichen',
'suche', 'newsrooms', 'api', 'suche', 'newsrooms', 'api',
'hilfe', 'impressum', 'datenschutz', 'agb', 'cookies', 'hilfe', 'impressum', 'datenschutz', 'agb',
]; ];
if (isset($staticAliases[$clean])) { if (isset($staticAliases[$clean])) {
@ -222,7 +223,9 @@ Route::prefix('{edition}')->whereIn('edition', SetEdition::EDITIONS)->group(func
->name('kuendigung.store'); ->name('kuendigung.store');
Route::view('datenschutz', 'web.datenschutz')->name('datenschutz'); Route::view('datenschutz', 'web.datenschutz')->name('datenschutz');
Route::view('agb', 'web.agb')->name('agb'); Route::view('agb', 'web.agb')->name('agb');
Route::view('cookies', 'web.cookies')->name('cookies'); // Cookie-Seite zurückgebaut (Entscheidung 03.07.): Cookies sind in der
// Datenschutzerklärung (Abschnitt 4) geregelt; kein Banner nötig.
Route::get('cookies', fn (string $edition) => redirect(request()->getSchemeAndHttpHost().'/'.$edition.'/datenschutz', 301))->name('cookies');
// Rechtstexte-Architektur (Entscheidung 03.07.2026): Veröffentlichungs- // Rechtstexte-Architektur (Entscheidung 03.07.2026): Veröffentlichungs-
// richtlinien (Bestandteil der AGB) und DSA-Meldeverfahren, auf allen // richtlinien (Bestandteil der AGB) und DSA-Meldeverfahren, auf allen

View file

@ -18,7 +18,7 @@ test('static pages on the hub domain render the hub shell', function (string $pa
->toContain('open-contact-modal') ->toContain('open-contact-modal')
// Kein Spoke-Portal-Branding im Gerüst. // Kein Spoke-Portal-Branding im Gerüst.
->not->toContain('Pressemitteilungen · DACH'); ->not->toContain('Pressemitteilungen · DACH');
})->with(['impressum', 'agb', 'datenschutz', 'cookies', 'api']); })->with(['impressum', 'agb', 'datenschutz', 'richtlinien', 'melden', 'api']);
test('the hub static page breadcrumb links back to the hub landing', function () { test('the hub static page breadcrumb links back to the hub landing', function () {
/** @var TestCase $this */ /** @var TestCase $this */

View file

@ -2,15 +2,19 @@
use Tests\TestCase; use Tests\TestCase;
test('header and footer link to faq, hilfe and cookies and drop dead links', function () { test('header and footer link to faq, hilfe and legal pages and drop dead links', function () {
/** @var TestCase $this */ /** @var TestCase $this */
$response = $this->get('https://businessportal24.test/de'); $response = $this->get('https://businessportal24.test/de');
$response->assertSuccessful() $response->assertSuccessful()
// Neu verlinkt (FAQ im Header + Footer, Hilfe + Cookies im Footer). // Neu verlinkt (FAQ im Header + Footer, Hilfe + Rechtsseiten im Footer).
// Die Cookie-Seite wurde zurückgebaut (Cookies stehen in der
// Datenschutzerklärung, Abschnitt 4).
->assertSee('/de/faq', false) ->assertSee('/de/faq', false)
->assertSee('/de/hilfe', false) ->assertSee('/de/hilfe', false)
->assertSee('/de/cookies', false) ->assertSee('/de/richtlinien', false)
->assertSee('/de/melden', false)
->assertDontSee('/de/cookies', false)
// „Anmelden" führt jetzt in den Hub statt auf einen toten Anker. // „Anmelden" führt jetzt in den Hub statt auf einen toten Anker.
->assertSee('/login', false) ->assertSee('/login', false)
->assertDontSee('href="#newsletter"', false) ->assertDontSee('href="#newsletter"', false)

View file

@ -106,7 +106,10 @@ test('legal pages are reachable on the hub domain', function () {
$this->get('https://pressekonto.test/de/impressum')->assertSuccessful(); $this->get('https://pressekonto.test/de/impressum')->assertSuccessful();
$this->get('https://pressekonto.test/de/datenschutz')->assertSuccessful(); $this->get('https://pressekonto.test/de/datenschutz')->assertSuccessful();
$this->get('https://pressekonto.test/de/agb')->assertSuccessful(); $this->get('https://pressekonto.test/de/agb')->assertSuccessful();
$this->get('https://pressekonto.test/de/cookies')->assertSuccessful(); // Cookie-Seite zurückgebaut — Inhalte stehen in der Datenschutzerklärung.
$this->get('https://pressekonto.test/de/cookies')
->assertStatus(301)
->assertRedirect('https://pressekonto.test/de/datenschutz');
}); });
test('pressekonto hub homepage uses the brand-mark splitting without TLDs', function () { test('pressekonto hub homepage uses the brand-mark splitting without TLDs', function () {

View file

@ -6,7 +6,6 @@ dataset('static pages', [
'impressum' => ['de/impressum', 'Impressum'], 'impressum' => ['de/impressum', 'Impressum'],
'datenschutz' => ['de/datenschutz', 'Datenschutzerklärung'], 'datenschutz' => ['de/datenschutz', 'Datenschutzerklärung'],
'agb' => ['de/agb', 'Allgemeine Geschäftsbedingungen'], 'agb' => ['de/agb', 'Allgemeine Geschäftsbedingungen'],
'cookies' => ['de/cookies', 'Cookie-Richtlinien'],
'faq' => ['de/faq', 'Häufig gestellte Fragen'], 'faq' => ['de/faq', 'Häufig gestellte Fragen'],
'hilfe' => ['de/hilfe', 'Hilfe-Center'], 'hilfe' => ['de/hilfe', 'Hilfe-Center'],
'api' => ['de/api', 'API-Dokumentation'], 'api' => ['de/api', 'API-Dokumentation'],
@ -91,6 +90,28 @@ test('the reporting page separates free legal paths from the paid takedown servi
->assertSeeText('Ausübung gesetzlicher Rechte'); ->assertSeeText('Ausübung gesetzlicher Rechte');
}); });
test('the privacy policy renders the real v03 content with host-specific blocks', function () {
/** @var TestCase $this */
// Spoke: Portal-Bausteine (Medienprivileg, Änderungslinks), kein Stripe-Block.
$this->get('https://presseecho.test/de/datenschutz')
->assertSuccessful()
->assertSeeText('adametz.media')
->assertSeeText('Hetzner Online GmbH')
->assertSeeText('Medienprivileg')
->assertSeeText('Änderungslinks für Pressekontakte')
->assertDontSeeText('Zahlungsabwicklung mit Stripe')
// Alter Platzhalter (Google Analytics gibt es nicht) ist weg.
->assertDontSeeText('Google Analytics');
// Hub: Kundenkonto-/Stripe-Bausteine, keine Portal-Bausteine.
$this->get('https://pressekonto.test/de/datenschutz')
->assertSuccessful()
->assertSeeText('Kundenkonto und Registrierung auf dem Hub')
->assertSeeText('Zahlungsabwicklung mit Stripe')
->assertSeeText('gewerblichen oder selbständigen beruflichen Tätigkeit')
->assertDontSeeText('Medienprivileg');
});
test('the help center shows quick links and topics', function () { test('the help center shows quick links and topics', function () {
/** @var TestCase $this */ /** @var TestCase $this */
$this->get('https://businessportal24.test/de/hilfe') $this->get('https://businessportal24.test/de/hilfe')