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

121 lines
4.2 KiB
PHP
Raw 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: Admin-Rolle zur Datenbank hinzufügen
// Führen Sie dies aus, um die is_admin Spalte zu erstellen
echo "🔧 Fix: Admin-Rolle zur Datenbank hinzufügen\n";
echo "==========================================\n\n";
try {
// Datenbankverbindung
$pdo = new PDO('sqlite:database.sqlite');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "1. 🔍 Prüfe users-Tabelle...\n";
// Prüfe ob is_admin Spalte existiert
$stmt = $pdo->query("PRAGMA table_info(users)");
$columns = $stmt->fetchAll(PDO::FETCH_ASSOC);
$hasAdminColumn = false;
echo " 📋 Aktuelle Spalten in users-Tabelle:\n";
foreach ($columns as $column) {
echo " - {$column['name']} ({$column['type']})\n";
if ($column['name'] === 'is_admin') {
$hasAdminColumn = true;
}
}
if (!$hasAdminColumn) {
echo "\n2. Füge is_admin Spalte hinzu...\n";
// Füge is_admin Spalte hinzu
$pdo->exec("ALTER TABLE users ADD COLUMN is_admin BOOLEAN DEFAULT 0");
echo " ✅ is_admin Spalte hinzugefügt\n";
// Prüfe nochmal
$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;
break;
}
}
if ($hasAdminColumn) {
echo " ✅ is_admin Spalte erfolgreich erstellt\n";
} else {
echo " ❌ is_admin Spalte konnte nicht erstellt werden\n";
exit;
}
} else {
echo "\n2. is_admin Spalte existiert bereits\n";
}
echo "\n3. 👑 Markiere bestehende Admin-User...\n";
// Markiere bestehende Admin-User
$stmt = $pdo->prepare("UPDATE users SET is_admin = 1 WHERE email IN (?, ?)");
$stmt->execute(['admin@neonail.com', 'neueradmin@neonail.com']);
$affectedRows = $stmt->rowCount();
echo "$affectedRows Admin-User aktualisiert\n";
echo "\n4. 📋 Zeige alle User mit Admin-Status...\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);
foreach ($users as $user) {
$adminStatus = $user['is_admin'] ? '👑 Admin' : '👤 User';
echo " - {$user['name']} ({$user['email']}) - {$adminStatus}\n";
}
echo "\n5. 🧪 Test: Mache einen User zum Admin...\n";
// Finde einen User, der noch kein Admin ist
$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 mit User: {$testUser['name']} ({$testUser['email']})\n";
// Mache User zum Admin
$stmt = $pdo->prepare("UPDATE users SET is_admin = 1 WHERE id = ?");
$stmt->execute([$testUser['id']]);
echo " ✅ User zum Admin gemacht\n";
// 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-Status korrekt gesetzt\n";
} else {
echo " ❌ Admin-Status nicht korrekt gesetzt\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 "\n✅ Admin-Rolle erfolgreich zur Datenbank hinzugefügt!\n";
echo "🔗 Testen Sie jetzt: https://neonail.vogt.de.com/admin/users\n";
echo "📝 Sie können jetzt User zum Admin machen!\n";
} catch (Exception $e) {
echo "❌ Fehler: " . $e->getMessage() . "\n";
echo "📍 Datei: " . $e->getFile() . ":" . $e->getLine() . "\n";
}
?>