neonail-database/test-admin-functionality.php
2025-08-10 18:09:07 +02:00

127 lines
4.3 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
// Test der Admin-Funktionalität
echo "👑 Test der Admin-Funktionalität\n";
echo "==============================\n\n";
try {
// Datenbankverbindung
$pdo = new PDO('sqlite:database.sqlite');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "1. 🔍 Prüfe is_admin Spalte...\n";
// Prüfe ob is_admin Spalte existiert
$stmt = $pdo->query("PRAGMA table_info(users)");
$columns = $stmt->fetchAll(PDO::FETCH_ASSOC);
$hasAdminColumn = false;
foreach ($columns as $column) {
if ($column['name'] === 'is_admin') {
$hasAdminColumn = true;
echo " ✅ is_admin Spalte gefunden\n";
break;
}
}
if (!$hasAdminColumn) {
echo " ❌ is_admin Spalte fehlt - führen Sie fix-admin-role-database.php aus\n";
exit;
}
echo "\n2. 📋 Zeige alle User...\n";
// Zeige alle User
$stmt = $pdo->query("SELECT id, name, email, is_admin FROM users ORDER BY is_admin DESC, name");
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (empty($users)) {
echo " ❌ Keine User gefunden\n";
} else {
foreach ($users as $user) {
$adminStatus = $user['is_admin'] ? '👑 Admin' : '👤 User';
echo " - {$user['name']} ({$user['email']}) - {$adminStatus}\n";
}
}
echo "\n3. 🧪 Test Admin-Funktionen...\n";
// Test: Mache einen User zum Admin
$stmt = $pdo->prepare("SELECT id, name, email FROM users WHERE is_admin = 0 LIMIT 1");
$stmt->execute();
$testUser = $stmt->fetch(PDO::FETCH_ASSOC);
if ($testUser) {
echo " 📝 Teste Admin-Erstellung mit User: {$testUser['name']}\n";
// Mache User zum Admin
$stmt = $pdo->prepare("UPDATE users SET is_admin = 1 WHERE id = ?");
$stmt->execute([$testUser['id']]);
// Prüfe Änderung
$stmt = $pdo->prepare("SELECT is_admin FROM users WHERE id = ?");
$stmt->execute([$testUser['id']]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if ($result['is_admin']) {
echo " ✅ Admin-Erstellung erfolgreich\n";
} else {
echo " ❌ Admin-Erstellung fehlgeschlagen\n";
}
// Mache User wieder zurück
$stmt = $pdo->prepare("UPDATE users SET is_admin = 0 WHERE id = ?");
$stmt->execute([$testUser['id']]);
echo " 🔄 User-Status zurückgesetzt\n";
} else {
echo " Alle User sind bereits Admins\n";
}
echo "\n4. 🔐 Prüfe Admin-Middleware...\n";
// Prüfe ob AdminMiddleware existiert
if (file_exists('app/Http/Middleware/AdminMiddleware.php')) {
echo " ✅ AdminMiddleware gefunden\n";
$content = file_get_contents('app/Http/Middleware/AdminMiddleware.php');
if (strpos($content, 'isAdmin()') !== false) {
echo " ✅ AdminMiddleware verwendet isAdmin() Methode\n";
} else {
echo " ⚠️ AdminMiddleware verwendet möglicherweise alte Email-Prüfung\n";
}
} else {
echo " ❌ AdminMiddleware nicht gefunden\n";
}
echo "\n5. 👤 Prüfe User Model...\n";
// Prüfe ob User Model isAdmin() Methode hat
if (file_exists('app/Models/User.php')) {
echo " ✅ User Model gefunden\n";
$content = file_get_contents('app/Models/User.php');
if (strpos($content, 'isAdmin()') !== false) {
echo " ✅ User Model hat isAdmin() Methode\n";
} else {
echo " ❌ User Model hat keine isAdmin() Methode\n";
}
if (strpos($content, 'is_admin') !== false) {
echo " ✅ User Model hat is_admin in fillable\n";
} else {
echo " ❌ User Model hat is_admin nicht in fillable\n";
}
} else {
echo " ❌ User Model nicht gefunden\n";
}
echo "\n✅ Admin-Funktionalität Test abgeschlossen!\n";
echo "🔗 Testen Sie jetzt: https://neonail.vogt.de.com/admin/users\n";
echo "📝 Versuchen Sie einen User zum Admin zu machen\n";
} catch (Exception $e) {
echo "❌ Fehler: " . $e->getMessage() . "\n";
echo "📍 Datei: " . $e->getFile() . ":" . $e->getLine() . "\n";
}
?>