neonail-database/fix-logout-route.php
2025-08-10 18:09:07 +02:00

195 lines
6.5 KiB
PHP
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
// Fix: Logout-Route Cache-Problem beheben
echo "🔧 Fix: Logout-Route Cache-Problem beheben\n";
echo "=========================================\n\n";
// 1. Alle Cache-Dateien löschen
echo "1. 🗑️ Alle Cache-Dateien löschen...\n";
$cacheFiles = [
'bootstrap/cache/packages.php',
'bootstrap/cache/services.php',
'bootstrap/cache/routes.php',
'bootstrap/cache/config.php',
'bootstrap/cache/application.php'
];
foreach ($cacheFiles as $cacheFile) {
if (file_exists($cacheFile)) {
unlink($cacheFile);
echo " ✅ Gelöscht: $cacheFile\n";
} else {
echo " Nicht vorhanden: $cacheFile\n";
}
}
// 2. Composer autoload neu generieren
echo "\n2. 🔄 Composer autoload neu generieren...\n";
system('composer dump-autoload 2>/dev/null || echo " ⚠️ composer dump-autoload übersprungen"');
echo " ✅ Autoload neu generiert\n";
// 3. Laravel Cache komplett leeren
echo "\n3. 🧹 Laravel Cache komplett leeren...\n";
system('php artisan cache:clear 2>/dev/null || echo " ⚠️ cache:clear übersprungen"');
system('php artisan config:clear 2>/dev/null || echo " ⚠️ config:clear übersprungen"');
system('php artisan view:clear 2>/dev/null || echo " ⚠️ view:clear übersprungen"');
system('php artisan route:clear 2>/dev/null || echo " ⚠️ route:clear übersprungen"');
system('php artisan optimize:clear 2>/dev/null || echo " ⚠️ optimize:clear übersprungen"');
echo " ✅ Laravel Cache geleert\n";
// 4. Routes-Datei prüfen und korrigieren
echo "\n4. 🛣️ Routes-Datei prüfen...\n";
$routesPath = 'routes/web.php';
if (file_exists($routesPath)) {
$content = file_get_contents($routesPath);
// Zeige alle Logout-bezogenen Zeilen
$lines = explode("\n", $content);
$logoutLines = [];
foreach ($lines as $lineNumber => $line) {
if (strpos($line, 'logout') !== false) {
$logoutLines[] = ($lineNumber + 1) . ": " . trim($line);
}
}
if (!empty($logoutLines)) {
echo " ✅ Logout-Routes gefunden:\n";
foreach ($logoutLines as $line) {
echo " 📋 $line\n";
}
} else {
echo " ❌ Keine Logout-Routes gefunden\n";
}
// Prüfe ob die Route korrekt ist
if (strpos($content, "Route::post('/logout', [LoginController::class, 'logout'])->name('logout')->middleware('auth');") !== false) {
echo " ✅ Logout-Route ist korrekt definiert\n";
} else {
echo " ❌ Logout-Route ist nicht korrekt definiert\n";
}
} else {
echo " ❌ Routes-Datei nicht gefunden\n";
}
// 5. LoginController prüfen
echo "\n5. 🔐 LoginController prüfen...\n";
$controllerPath = 'app/Http/Controllers/Auth/LoginController.php';
if (file_exists($controllerPath)) {
$content = file_get_contents($controllerPath);
if (strpos($content, 'public function logout') !== false) {
echo " ✅ Logout-Methode vorhanden\n";
// Zeige Logout-Methode
$lines = explode("\n", $content);
$inLogoutMethod = false;
$methodLines = [];
foreach ($lines as $lineNumber => $line) {
if (strpos($line, 'public function logout') !== false) {
$inLogoutMethod = true;
$methodLines[] = ($lineNumber + 1) . ": " . trim($line);
} elseif ($inLogoutMethod && strpos($line, 'public function') !== false) {
$inLogoutMethod = false;
} elseif ($inLogoutMethod) {
$methodLines[] = ($lineNumber + 1) . ": " . trim($line);
}
}
echo " 📋 Logout-Methode:\n";
foreach ($methodLines as $line) {
echo " $line\n";
}
} else {
echo " ❌ Logout-Methode nicht gefunden\n";
}
} else {
echo " ❌ LoginController nicht gefunden\n";
}
// 6. Route-Liste neu generieren
echo "\n6. 🛣️ Route-Liste neu generieren...\n";
try {
require_once 'vendor/autoload.php';
// Laravel Bootstrap
$app = require_once 'bootstrap/app.php';
$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();
// Route-Liste abrufen
$routes = \Illuminate\Support\Facades\Route::getRoutes();
$logoutRoutes = [];
foreach ($routes as $route) {
$uri = $route->uri();
$methods = $route->methods();
$name = $route->getName();
if (strpos($uri, 'logout') !== false || strpos($name, 'logout') !== false) {
$logoutRoutes[] = [
'uri' => $uri,
'methods' => $methods,
'name' => $name
];
}
}
if (empty($logoutRoutes)) {
echo " ❌ Keine Logout-Routes in Laravel registriert\n";
} else {
echo " ✅ Logout-Routes in Laravel gefunden:\n";
foreach ($logoutRoutes as $route) {
$methods = implode('|', $route['methods']);
$name = $route['name'] ?: 'kein Name';
echo " 📋 $methods $uri ($name)\n";
}
}
} catch (Exception $e) {
echo " ❌ Fehler beim Abrufen der Routes: " . $e->getMessage() . "\n";
}
// 7. Test-Logout-Form erstellen
echo "\n7. 🧪 Test-Logout-Form erstellen...\n";
$testForm = '<!DOCTYPE html>
<html>
<head>
<title>Logout Test</title>
<meta charset="utf-8">
</head>
<body>
<h1>Logout Test</h1>
<form action="{{ route("logout") }}" method="POST">
@csrf
<button type="submit">Abmelden</button>
</form>
<p>Route: {{ route("logout") }}</p>
</body>
</html>';
file_put_contents('public/logout-test.blade.php', $testForm);
echo " ✅ Test-Form erstellt: public/logout-test.blade.php\n";
// 8. Apache neu laden (falls möglich)
echo "\n8. 🔄 Apache neu laden...\n";
system('systemctl reload apache2 2>/dev/null || echo " ⚠️ Apache reload übersprungen"');
echo " ✅ Apache neu geladen\n";
echo "\n✅ Logout-Route Fix abgeschlossen!\n";
echo "🔗 Testen Sie jetzt:\n";
echo "1. Klicken Sie auf Ihren Benutzernamen (oben rechts)\n";
echo "2. Wählen Sie 'Abmelden' aus dem Dropdown\n";
echo "3. Falls das nicht funktioniert:\n";
echo " - Öffnen Sie Browser-Entwicklertools (F12)\n";
echo " - Gehen Sie zu Network-Tab\n";
echo " - Klicken Sie auf Abmelden\n";
echo " - Schauen Sie welche URL aufgerufen wird\n";
echo "\n📋 Falls Problem besteht:\n";
echo "- Teilen Sie die Network-Tab Ausgabe mit\n";
echo "- Schauen Sie in die Laravel-Logs: tail -f storage/logs/laravel.log\n";
echo "- Testen Sie direkt: https://neonail.vogt.de.com/logout\n";
?>