mivita/dev/app-bak/Services/SessionCleaner.php
2025-10-20 17:42:08 +02:00

80 lines
2.1 KiB
PHP

<?php
namespace App\Services;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Session;
/**
* Zentrale Session-Bereinigung
*
* Verhindert Error-Message-Persistierung durch intelligente Session-Bereinigung
* vor dem Speichern. Wird von allen Controllern und Services verwendet.
*/
class SessionCleaner
{
/**
* Session bereinigen und speichern (verhindert Error-Persistierung)
*/
public static function cleanAndSave(string $context = 'unknown'): void
{
Log::info("SessionCleaner: Session cleanup - $context", [
'session_id' => Session::getId(),
'context' => $context
]);
// Error-Bags bereinigen
if (Session::has('errors')) {
Session::forget('errors');
}
// Alte Input-Daten bereinigen
if (Session::has('_old_input')) {
Session::forget('_old_input');
}
// Session speichern
try {
Session::save();
Log::info("SessionCleaner: Session cleaned and saved - $context", [
'session_id' => Session::getId()
]);
} catch (\Throwable $e) {
Log::error("SessionCleaner: Session save failed - $context", [
'error' => $e->getMessage(),
'session_id' => Session::getId()
]);
}
}
/**
* Nur Error-Messages bereinigen (ohne Session zu speichern)
*/
public static function cleanErrors(): void
{
// Error-Bags bereinigen
if (Session::has('errors')) {
Session::forget('errors');
}
// Alte Input-Daten bereinigen
if (Session::has('_old_input')) {
Session::forget('_old_input');
}
}
/**
* Session nur speichern (ohne Bereinigung)
*/
public static function saveOnly(): void
{
try {
Session::save();
} catch (\Throwable $e) {
Log::error("SessionCleaner: Session save failed", [
'error' => $e->getMessage(),
'session_id' => Session::getId()
]);
}
}
}