T10: DSA-Meldeformulare mit URL-Feld, Vorgangsnummer und Eingangsbestaetigung
Zwei eigenstaendige Formulare unter /melden/rechtswidrig (DSA Art. 16:
URL, Name, E-Mail, Begruendung, Wahrheitsversicherung) und
/melden/kontaktdaten (DSGVO-Antrag) auf allen drei Domains. Gemeldete
URLs werden automatisch der passenden veroeffentlichten PM zugeordnet;
ohne Treffer bleibt die URL im payload. Jede Meldung erhaelt eine
Vorgangsnummer (M-{id}, analog K-{id} der Kuendigung), die meldende
Person unverzueglich eine Eingangsbestaetigung (DSA Art. 16 Abs. 4) und
das Melde-Postfach einen internen Hinweis — auch im bestehenden
Per-PM-Flow. Admin-Queue zeigt Vorgangsnummer, Name und gemeldete URL;
/melden verlinkt die neuen Formulare als ersten Weg.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
61a677aa0b
commit
2a9be7a9af
14 changed files with 673 additions and 12 deletions
132
resources/views/web/melden-form.blade.php
Normal file
132
resources/views/web/melden-form.blade.php
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
@extends('web.layouts.web-master')
|
||||
|
||||
@php
|
||||
// T10: Eigenständige Meldeformulare (Meldeverfahren v0.1). Weg 1 =
|
||||
// DSA-Meldung rechtswidriger Inhalte, Weg 2 = DSGVO-Antrag auf
|
||||
// Entfernung eigener Kontaktdaten. Beide speisen die Admin-Queue
|
||||
// "Recht & Compliance" und bestätigen den Eingang per E-Mail.
|
||||
$isIllegalContent = $way === 'rechtswidrig';
|
||||
$pageTitle = $isIllegalContent
|
||||
? 'Rechtswidrige Inhalte melden'
|
||||
: 'Eigene Kontaktdaten entfernen lassen';
|
||||
@endphp
|
||||
|
||||
@section('title', $pageTitle)
|
||||
@section('meta_description', $isIllegalContent
|
||||
? 'Rechtswidrige Inhalte oder Rechteverletzungen in einer Pressemitteilung melden (DSA) — kostenlos, mit Eingangsbestätigung.'
|
||||
: 'Entfernung eigener personenbezogener Kontaktdaten aus einer Pressemitteilung beantragen (DSGVO) — kostenlos.')
|
||||
|
||||
@section('content')
|
||||
<x-web.static-page
|
||||
eyebrow="Rechtliches"
|
||||
:title="$pageTitle"
|
||||
breadcrumb="Inhalte melden"
|
||||
>
|
||||
<div class="max-w-[640px]">
|
||||
<p class="text-[13.5px] text-ink-2 leading-relaxed mb-2">
|
||||
@if ($isIllegalContent)
|
||||
Nutzen Sie dieses Formular, wenn Sie eine veröffentlichte Pressemitteilung für
|
||||
rechtswidrig halten oder Ihre Rechte verletzt sehen. Die Meldung ist kostenlos;
|
||||
Sie erhalten unverzüglich eine Eingangsbestätigung mit Vorgangsnummer und
|
||||
anschließend unsere begründete Entscheidung.
|
||||
@else
|
||||
Nutzen Sie dieses Formular, wenn Ihre persönlichen Kontaktdaten (z. B. Name,
|
||||
Telefonnummer oder E-Mail-Adresse) in einer Pressemitteilung stehen. Die Prüfung
|
||||
erfolgt nach den Vorgaben der DSGVO und ist für Sie kostenlos.
|
||||
@endif
|
||||
</p>
|
||||
<p class="text-[12.5px] text-ink-3 leading-relaxed mb-6">
|
||||
Alle Wege im Überblick: <a href="{{ route('melden') }}" class="underline underline-offset-2 hover:text-ink">Inhalte melden oder Änderungen beantragen</a>
|
||||
</p>
|
||||
|
||||
@if (session('report-status'))
|
||||
<div class="mb-6 px-4 py-3 border border-bg-rule bg-bg-elev text-[13px] text-ink-2" role="status">
|
||||
{{ session('report-status') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('melden.form.store', ['way' => $way]) }}" class="space-y-5">
|
||||
@csrf
|
||||
|
||||
<div>
|
||||
<label for="reported_url" class="block text-[12px] font-semibold text-ink mb-1.5">URL der betroffenen Pressemitteilung</label>
|
||||
<input id="reported_url" type="url" name="reported_url" value="{{ old('reported_url') }}" required
|
||||
placeholder="https://…"
|
||||
class="w-full border border-bg-rule px-3 py-2.5 text-[13px] bg-white text-ink focus:outline-none focus:border-brand" />
|
||||
@error('reported_url')
|
||||
<p class="mt-1 text-[12px] text-red-600">{{ $message }}</p>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="requester_name" class="block text-[12px] font-semibold text-ink mb-1.5">Ihr Name</label>
|
||||
<input id="requester_name" type="text" name="requester_name" value="{{ old('requester_name') }}" required
|
||||
autocomplete="name"
|
||||
class="w-full border border-bg-rule px-3 py-2.5 text-[13px] bg-white text-ink focus:outline-none focus:border-brand" />
|
||||
@error('requester_name')
|
||||
<p class="mt-1 text-[12px] text-red-600">{{ $message }}</p>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="requester_email" class="block text-[12px] font-semibold text-ink mb-1.5">
|
||||
{{ $isIllegalContent ? 'Ihre E-Mail-Adresse' : 'Ihre E-Mail-Adresse (für Rückmeldung und ggf. Bestätigungslink)' }}
|
||||
</label>
|
||||
<input id="requester_email" type="email" name="requester_email" value="{{ old('requester_email') }}" required
|
||||
autocomplete="email"
|
||||
class="w-full border border-bg-rule px-3 py-2.5 text-[13px] bg-white text-ink focus:outline-none focus:border-brand" />
|
||||
@error('requester_email')
|
||||
<p class="mt-1 text-[12px] text-red-600">{{ $message }}</p>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="message" class="block text-[12px] font-semibold text-ink mb-1.5">
|
||||
{{ $isIllegalContent ? 'Begründung: Warum halten Sie den Inhalt für rechtswidrig?' : 'Welche Angaben sind betroffen?' }}
|
||||
</label>
|
||||
<textarea id="message" name="message" rows="6" required
|
||||
class="w-full border border-bg-rule px-3 py-2.5 text-[13px] bg-white text-ink focus:outline-none focus:border-brand"
|
||||
placeholder="{{ $isIllegalContent ? 'Bitte beschreiben Sie konkret, welche Inhalte betroffen sind und warum.' : 'z. B. „Mein Name und meine Telefonnummer stehen im Pressekontakt.“' }}">{{ old('message') }}</textarea>
|
||||
@error('message')
|
||||
<p class="mt-1 text-[12px] text-red-600">{{ $message }}</p>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
@if ($isIllegalContent)
|
||||
<div>
|
||||
<label class="flex items-start gap-2.5 text-[12.5px] text-ink-2 leading-relaxed cursor-pointer">
|
||||
<input type="checkbox" name="truth_affirmed" value="1" @checked(old('truth_affirmed'))
|
||||
class="mt-0.5 flex-shrink-0" />
|
||||
<span>
|
||||
Ich versichere, dass ich diese Meldung nach bestem Wissen und Gewissen
|
||||
abgebe und die Angaben richtig und vollständig sind.
|
||||
</span>
|
||||
</label>
|
||||
@error('truth_affirmed')
|
||||
<p class="mt-1 text-[12px] text-red-600">{{ $message }}</p>
|
||||
@enderror
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{{-- Bot-Schutz: Honeypot-Felder (siehe legal-request.blade.php). --}}
|
||||
<div class="hidden" aria-hidden="true">
|
||||
<label for="website">Website</label>
|
||||
<input id="website" type="text" name="website" tabindex="-1" autocomplete="off" value="{{ old('website') }}" />
|
||||
<label for="homepage">Homepage</label>
|
||||
<input id="homepage" type="text" name="homepage" tabindex="-1" autocomplete="off" value="{{ old('homepage') }}" />
|
||||
</div>
|
||||
|
||||
<button type="submit"
|
||||
class="bg-brand hover:bg-brand-deep text-white px-5 py-2.5 text-[13px] font-semibold transition-colors">
|
||||
{{ $isIllegalContent ? 'Meldung absenden' : 'Antrag absenden' }}
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<p class="mt-6 text-[11.5px] text-ink-3 leading-relaxed">
|
||||
Ihre Angaben werden ausschließlich zur Bearbeitung Ihrer Meldung verarbeitet —
|
||||
Details in der <a href="{{ route('datenschutz') }}" class="underline hover:text-ink">Datenschutzerklärung</a>.
|
||||
Meldungen und die Ausübung gesetzlicher Rechte sind kostenlos.
|
||||
</p>
|
||||
</div>
|
||||
</x-web.static-page>
|
||||
@endsection
|
||||
|
|
@ -50,11 +50,13 @@
|
|||
<li>sonstigen gesetzlichen Verstößen.</li>
|
||||
</ul>
|
||||
<p>
|
||||
<strong>Meldung:</strong> Öffnen Sie die betroffene Pressemitteilung und nutzen Sie dort
|
||||
den Link <em>„Pressemitteilung melden"</em> — die Mitteilung wird dabei automatisch dem
|
||||
Vorgang zugeordnet. Alternativ senden Sie Ihre Meldung mit der URL der betroffenen
|
||||
Pressemitteilung an
|
||||
<a href="mailto:{{ $reportEmail }}">{{ $reportEmail }}</a>.
|
||||
<strong>Meldung:</strong> Nutzen Sie unser
|
||||
<a href="{{ route('melden.form', ['way' => 'rechtswidrig']) }}">Meldeformular für
|
||||
rechtswidrige Inhalte</a> — Sie erhalten unverzüglich eine Eingangsbestätigung mit
|
||||
Vorgangsnummer. Alternativ öffnen Sie die betroffene Pressemitteilung und nutzen dort
|
||||
den Link <em>„Inhalt melden"</em> (die Mitteilung wird dabei automatisch dem Vorgang
|
||||
zugeordnet), oder Sie senden Ihre Meldung mit der URL der betroffenen Pressemitteilung
|
||||
an <a href="mailto:{{ $reportEmail }}">{{ $reportEmail }}</a>.
|
||||
</p>
|
||||
<p>Damit wir Ihre Meldung prüfen können, benötigen wir:</p>
|
||||
<ul>
|
||||
|
|
@ -81,9 +83,11 @@
|
|||
E-Mail-Adresse.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Antrag:</strong> Öffnen Sie die betroffene Pressemitteilung und nutzen Sie dort
|
||||
den Link <em>„Datenschutz & Persönlichkeitsrecht"</em> — oder senden Sie Ihren
|
||||
Antrag an <a href="mailto:{{ $reportEmail }}">{{ $reportEmail }}</a>.
|
||||
<strong>Antrag:</strong> Nutzen Sie unser
|
||||
<a href="{{ route('melden.form', ['way' => 'kontaktdaten']) }}">Antragsformular zur
|
||||
Entfernung eigener Kontaktdaten</a>. Alternativ öffnen Sie die betroffene
|
||||
Pressemitteilung und nutzen dort den Link <em>„Eigene Daten entfernen"</em> — oder Sie
|
||||
senden Ihren Antrag an <a href="mailto:{{ $reportEmail }}">{{ $reportEmail }}</a>.
|
||||
</p>
|
||||
<p>
|
||||
Wir prüfen Ihren Antrag nach den Vorgaben der Datenschutz-Grundverordnung. Die Prüfung und
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue