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:
Kevin Adametz 2026-07-06 09:35:30 +00:00
parent 5337a14bf0
commit 979e6b1ee1
14 changed files with 673 additions and 12 deletions

View file

@ -44,6 +44,32 @@ class LegalRequest extends Model
];
}
/**
* Öffentliche Vorgangsnummer (T10) — analog zur Kündigung ("K-{id}").
* Wird in der Eingangsbestätigung genannt und bei Rückfragen referenziert.
*/
public function reference(): string
{
return 'M-'.$this->id;
}
/**
* Name des Meldenden (Standalone-Formulare, DSA Art. 16) — strukturierte
* Zusatzfelder liegen bewusst im payload (WS-3).
*/
public function requesterName(): ?string
{
return $this->payload['requester_name'] ?? null;
}
/**
* Gemeldete URL, wie vom Meldenden angegeben (Standalone-Formulare).
*/
public function reportedUrl(): ?string
{
return $this->payload['reported_url'] ?? null;
}
public function pressRelease(): BelongsTo
{
return $this->belongsTo(PressRelease::class);