presseportale/config/newsroom.php
Kevin Adametz 1ccb4a8479 auth/security: API-Firmenzuordnung nur für Mitglieder oder Allowlist, Google-Vorabübernahme geschlossen, gemeinsamer Login-Abschluss (Umsetzungsaudit 29.09.: R-01, K-04, K-07, K-08, B-10)
- R-01: ApiNewsroomAssignment hängt an eine bestehende Firma nur noch Owner,
  Mitglieder oder Nutzer aus NEWSROOM_API_ASSIGNMENT_USER_IDS; Pivot mit
  granted_via = api; Befehl company-memberships:api-assignments (Liste,
  --remove mit Vorschau)
- K-04: OAuth-Verifikation eines offenen Kontos verwirft Passwort,
  remember_token und Sanctum-Tokens; SessionRevocation + Middleware
  EnsureSessionIsNotRevoked widerruft alte Sessions (Redis-tauglich)
- K-08: LoginCompletion für Passwort, Magic Link und Google — last_login_at
  und Anmeldemethode auch nach 2FA, Landeziel über die Challenge, Google
  ohne erzwungenes remember, magic-login ohne guest für eigene Links
- B-10: eigener Magic-Link-Zweck image_confirmation (Migration)
- K-07: legalAcceptanceVersions #[Locked], Versionswechsel beim Absenden
  wird abgelehnt, Gate-Abfragen je Request zwischengespeichert

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 13:09:00 +00:00

68 lines
2.8 KiB
PHP

<?php
return [
/*
|--------------------------------------------------------------------------
| Newsroom-Konsolidierung (Roadmap 1a)
|--------------------------------------------------------------------------
|
| Schlüssel der Zusammenführung ist die Firmen-E-Mail. Der Schwellwert
| (Entscheidung E1, 11.09.2026) legt fest, ab wie vielen WIRKLICH
| verschiedenen Firmennamen eine Adresse als Sammeladresse gilt — also als
| Agentur oder Dienstleister, über den nicht zusammengeführt wird.
|
| 3 ist das Ergebnis dreier Live-Läufe: Bei 2 wird jede zweite Schreibweise
| zur „Agentur" (ProCoReX, Welcon), bei 4 wandern echte Mehrkunden-Adressen
| in die Handarbeit. Tippfehler und Rechtsformen zählen dabei nicht als
| verschiedene Namen (siehe CompanyAddressClassifier).
|
*/
'merge' => [
'collection_threshold' => (int) env('NEWSROOM_MERGE_COLLECTION_THRESHOLD', 3),
],
/*
|--------------------------------------------------------------------------
| Verwaltungszugang „Diesen Newsroom verwalten" (Roadmap 1b.2)
|--------------------------------------------------------------------------
|
| claim_links_per_day: Anmeldelinks je Newsroom und Tag. Der Versand geht
| an die hinterlegte Firmen-E-Mail, nicht an eine vom Besucher eingegebene
| — er darf trotzdem kein Werkzeug werden, fremde Postfächer zu fluten.
| Gezählt werden nur versendete Links (R-09, 29.09.2026: 3 → 5, damit
| Dritte den Inhaber nicht mit wenigen Klicks für 24 h aussperren).
|
*/
'claim' => [
'links_per_day' => (int) env('NEWSROOM_CLAIM_LINKS_PER_DAY', 5),
],
/*
|--------------------------------------------------------------------------
| API-Zuordnung zu bestehenden Newsrooms (Roadmap 1a.4, Audit R-01)
|--------------------------------------------------------------------------
|
| Der Alt-Vertrag `POST /service/users/me/companies` hängt eine neue
| API-Firma an den bestehenden Newsroom mit derselben Firmen-E-Mail und
| demselben Namen. Firmenname und Kontaktadresse stehen öffentlich — die
| Zuordnung (samt Mitgliedschaft mit Schreibrecht auf alle Firmen-PMs) gibt
| es deshalb nur für freigeschaltete Einlieferer (heute connektar) oder
| wenn der Token-Nutzer der Firma ohnehin schon angehört. Alle anderen
| bekommen wie vor 1a.4 eine neue Firma.
|
| allowed_user_ids: kommagetrennte User-IDs (NEWSROOM_API_ASSIGNMENT_USER_IDS).
| Standard leer.
|
*/
'api_assignment' => [
'allowed_user_ids' => array_values(array_unique(array_filter(
array_map('intval', explode(',', (string) env('NEWSROOM_API_ASSIGNMENT_USER_IDS', ''))),
fn (int $id): bool => $id > 0,
))),
],
];