presseportale/dev/legacy_logging/UMSETZUNGSSTAND.md
Kevin Adametz 5b8bdf4182
Some checks are pending
linter / quality (push) Waiting to run
tests / ci (push) Waiting to run
12-05-2026 Frontend dev
2026-05-12 18:32:33 +02:00

5.6 KiB

Legacy Logging - Umsetzungsstand

Stand: 2026-05-11

Update 2026-05-12: Auf dem Live-Server wurden Login- und API-Logs erfolgreich erzeugt, aber noch keine publications-YYYY-MM-DD.log. Ursache war sehr wahrscheinlich der Doctrine-1-Zeitpunkt im postSave()-Hook: Die aktuellen Modified-Felder sind dort bereits zurueckgesetzt. Der Hook nutzt jetzt getLastModified(true).

Status

Die erste Implementierung ist vorbereitet. Sie protokolliert erfolgreiche und fehlgeschlagene Logins, erfolgreiche und fehlgeschlagene API-Authentifizierungen sowie Veroeffentlichungen von Pressemitteilungen.

Angelegte Datei

_businessportal24.com/lib/LegacyActivityLogger.class.php

Zweck:

  • schreibt JSONL-Tagesdateien nach _businessportal24.com/log/activity/
  • sammelt HTTP-Metadaten
  • formatiert Nutzer-, Pressemitteilungs-, Firmen- und Kontaktdaten
  • arbeitet unabhaengig vom deaktivierten Symfony-Produktivlogger

Geaenderte Legacy-Dateien

_businessportal24.com/apps/frontend/lib/myUser.class.php

Erfasst erfolgreiche Frontend-Logins und erfolgreiche API-Authentifizierungen, weil beide am Ende ueber signIn() laufen.

_businessportal24.com/apps/backend/lib/myUser.class.php

Erfasst erfolgreiche Backend/Admin-Logins.

_businessportal24.com/plugins/PressePortalPlugin/lib/filters/ApiKeyGuardAuthFilter.class.php

Erfasst jeden API-Request mit gueltigem X-ApiKey ueber den anschliessenden signIn()-Pfad und schreibt fehlgeschlagene API-Authentifizierungen direkt in api-failed-YYYY-MM-DD.log.

_businessportal24.com/plugins/PressePortalPlugin/modules/sfGuardAuth/actions/actions.class.php

Erfasst fehlgeschlagene Frontend-Login-Versuche.

_businessportal24.com/plugins/PressePortalPlugin/modules/adminSfGuardAuth/actions/actions.class.php

Erfasst fehlgeschlagene Backend/Admin-Login-Versuche.

_businessportal24.com/lib/model/doctrine/PressePortalPlugin/PressRelease.class.php

Erfasst Veroeffentlichungen, sobald der Status einer Pressemitteilung auf published wechselt. Seit dem Fix vom 2026-05-12 wird im postSave()-Hook getLastModified(true) verwendet, weil Doctrine 1 die aktuellen Modified-Felder vor postSave() bereits in lastModified verschiebt.

Erwartete Log-Dateien

_businessportal24.com/log/activity/login-success-YYYY-MM-DD.log
_businessportal24.com/log/activity/login-failed-YYYY-MM-DD.log
_businessportal24.com/log/activity/api-success-YYYY-MM-DD.log
_businessportal24.com/log/activity/api-failed-YYYY-MM-DD.log
_businessportal24.com/log/activity/publications-YYYY-MM-DD.log

Beispiel: API-Erfolg

{"time":"2026-05-11T13:27:00+02:00","app":"frontend","method":"POST","uri":"https://www.businessportal24.com/service/pressreleases.json","ip":"127.0.0.1","user_agent":"Client","event":"api_auth_success","source":"api","user":{"id":123,"username":"kunde@example.com","email":"kunde@example.com"}}

Beispiel: Veroeffentlichung

{"time":"2026-05-11T13:27:00+02:00","event":"pressrelease_published","source":"api","published_by":{"id":123,"username":"kunde@example.com","email":"kunde@example.com"},"owner":{"id":123,"username":"kunde@example.com","email":"kunde@example.com"},"pressrelease":{"id":456,"title":"Titel","language":"de","status":"published"},"company":{"id":77,"name":"Firma GmbH","email":"info@example.com"},"contacts":[{"id":9,"company_id":77,"first_name":"Max","last_name":"Muster","email":"presse@example.com","phone":"+49..."}]}

Geprueft

  • PHP-Syntaxpruefung mit php -l fuer alle geaenderten Legacy-PHP-Dateien.
  • IDE-Lints fuer alle geaenderten Legacy-PHP-Dateien: keine Fehler.
  • 2026-05-12: Fix fuer fehlende Publication-Logs in PressRelease.class.php ergaenzt.

Noch zu pruefen

  • Manueller Test im Legacy-System:
    • erfolgreicher Frontend-Login
    • fehlgeschlagener Frontend-Login
    • erfolgreicher Backend-Login
    • fehlgeschlagener Backend-Login
    • API-Request mit gueltigem X-ApiKey
    • API-Request ohne/mit falschem X-ApiKey
    • Veroeffentlichung ueber API
    • Veroeffentlichung ueber Kundenlogin
    • Veroeffentlichung ueber Admin

Hinweise

  • Es wird jeder API-Request einzeln protokolliert.
  • E-Mail-Adressen werden vollstaendig geschrieben. Fehlgeschlagene API-Key-Werte werden ebenfalls vollstaendig protokolliert, damit die Eintraege in der Datenbank wiedergefunden werden koennen.
  • Die Dateien duerfen nicht in ein oeffentlich erreichbares Verzeichnis verschoben werden.

Austauschliste fuer den Live-Server

Diese Dateien muessen auf dem Legacy-Live-Server ausgetauscht bzw. neu hochgeladen werden:

_businessportal24.com/lib/LegacyActivityLogger.class.php
_businessportal24.com/apps/frontend/lib/myUser.class.php
_businessportal24.com/apps/backend/lib/myUser.class.php
_businessportal24.com/plugins/PressePortalPlugin/lib/filters/ApiKeyGuardAuthFilter.class.php
_businessportal24.com/plugins/PressePortalPlugin/modules/sfGuardAuth/actions/actions.class.php
_businessportal24.com/plugins/PressePortalPlugin/modules/adminSfGuardAuth/actions/actions.class.php
_businessportal24.com/lib/model/doctrine/PressePortalPlugin/PressRelease.class.php

Nach dem Austausch pruefen, ob das Verzeichnis _businessportal24.com/log/ fuer den PHP-Prozess beschreibbar ist. Das Unterverzeichnis activity/ wird automatisch angelegt.

Austauschliste fuer den Fix vom 2026-05-12

Wenn Login/API-Logs vorhanden sind, aber keine publications-YYYY-MM-DD.log, muss nur diese Datei erneut ausgetauscht werden:

_businessportal24.com/lib/model/doctrine/PressePortalPlugin/PressRelease.class.php

Danach Symfony-Cache leeren und eine Test-Veroeffentlichung ausloesen.