It appears that the repository has undergone several changes and renamings:
This commit is contained in:
171
backend/debug/debug_admin.py
Normal file
171
backend/debug/debug_admin.py
Normal file
@ -0,0 +1,171 @@
|
||||
#!/usr/bin/env python3.11
|
||||
"""
|
||||
Debug-Skript für Admin-Dashboard-Probleme
|
||||
"""
|
||||
|
||||
import sys
|
||||
import traceback
|
||||
from app import app
|
||||
from models import User, get_cached_session
|
||||
from flask import url_for
|
||||
from flask_login import login_user
|
||||
|
||||
def test_admin_route():
|
||||
"""Testet die Admin-Route mit verschiedenen Szenarien"""
|
||||
|
||||
print("=== ADMIN ROUTE DEBUG ===")
|
||||
|
||||
with app.app_context():
|
||||
try:
|
||||
# 1. Test ohne Login (sollte 302 redirect geben)
|
||||
print("\n1. Test ohne Login:")
|
||||
with app.test_client() as client:
|
||||
response = client.get('/admin/')
|
||||
print(f" Status: {response.status_code}")
|
||||
print(f" Location: {response.headers.get('Location', 'None')}")
|
||||
|
||||
# 2. Admin-Benutzer finden
|
||||
print("\n2. Admin-Benutzer suchen:")
|
||||
with get_cached_session() as session:
|
||||
admin_users = session.query(User).filter(User.role == 'admin').all()
|
||||
print(f" Gefundene Admin-Benutzer: {len(admin_users)}")
|
||||
|
||||
if admin_users:
|
||||
admin_user = admin_users[0]
|
||||
print(f" Admin: {admin_user.username} (ID: {admin_user.id})")
|
||||
|
||||
# 3. Test mit korrektem Flask-Login
|
||||
print("\n3. Test mit Flask-Login:")
|
||||
with app.test_client() as client:
|
||||
# Simuliere Login über POST-Request
|
||||
login_data = {
|
||||
'username': admin_user.username,
|
||||
'password': 'admin123' # Standard-Admin-Passwort
|
||||
}
|
||||
|
||||
# Erst einloggen
|
||||
login_response = client.post('/auth/login', data=login_data, follow_redirects=False)
|
||||
print(f" Login Status: {login_response.status_code}")
|
||||
|
||||
# Dann Admin-Dashboard aufrufen
|
||||
response = client.get('/admin/', follow_redirects=False)
|
||||
print(f" Admin Dashboard Status: {response.status_code}")
|
||||
|
||||
if response.status_code == 500:
|
||||
print(" ERROR DATA:")
|
||||
error_data = response.get_data(as_text=True)
|
||||
print(f" {error_data[:1000]}...")
|
||||
elif response.status_code == 200:
|
||||
print(" SUCCESS: Admin-Dashboard lädt korrekt!")
|
||||
elif response.status_code == 302:
|
||||
print(f" Redirect zu: {response.headers.get('Location', 'Unknown')}")
|
||||
else:
|
||||
print(f" Unerwarteter Status: {response.status_code}")
|
||||
|
||||
# 4. Test der Admin-Dashboard-Funktion direkt
|
||||
print("\n4. Test der Admin-Dashboard-Funktion direkt:")
|
||||
try:
|
||||
from blueprints.admin_unified import admin_dashboard
|
||||
from flask import g
|
||||
from flask_login import current_user
|
||||
|
||||
# Simuliere Request-Context
|
||||
with app.test_request_context('/admin/'):
|
||||
# Simuliere eingeloggten Admin
|
||||
login_user(admin_user)
|
||||
|
||||
# Rufe Dashboard-Funktion direkt auf
|
||||
result = admin_dashboard()
|
||||
print(f" Direkter Aufruf erfolgreich: {type(result)}")
|
||||
|
||||
except Exception as e:
|
||||
print(f" Direkter Aufruf fehlgeschlagen: {e}")
|
||||
traceback.print_exc()
|
||||
|
||||
else:
|
||||
print(" FEHLER: Kein Admin-Benutzer gefunden!")
|
||||
|
||||
# Admin-Benutzer erstellen
|
||||
print("\n Erstelle Admin-Benutzer...")
|
||||
from models import create_initial_admin
|
||||
success = create_initial_admin()
|
||||
print(f" Admin erstellt: {success}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"\nFEHLER: {e}")
|
||||
traceback.print_exc()
|
||||
|
||||
def test_admin_decorator():
|
||||
"""Testet den Admin-Decorator"""
|
||||
print("\n=== ADMIN DECORATOR TEST ===")
|
||||
|
||||
try:
|
||||
from blueprints.admin_unified import admin_required
|
||||
print("✅ Admin-Decorator importiert")
|
||||
|
||||
# Test-Funktion mit Decorator
|
||||
@admin_required
|
||||
def test_func():
|
||||
return "Success"
|
||||
|
||||
print("✅ Decorator angewendet")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Decorator-Fehler: {e}")
|
||||
traceback.print_exc()
|
||||
|
||||
def test_template():
|
||||
"""Testet das Admin-Template"""
|
||||
print("\n=== TEMPLATE TEST ===")
|
||||
|
||||
try:
|
||||
with app.app_context():
|
||||
with app.test_request_context('/admin/'):
|
||||
from flask import render_template
|
||||
|
||||
# Test mit leeren Stats
|
||||
result = render_template('admin.html', stats={})
|
||||
print(f"✅ Template gerendert (Länge: {len(result)} Zeichen)")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Template-Fehler: {e}")
|
||||
traceback.print_exc()
|
||||
|
||||
def check_admin_user_password():
|
||||
"""Überprüft das Admin-Benutzer-Passwort"""
|
||||
print("\n=== ADMIN PASSWORD CHECK ===")
|
||||
|
||||
try:
|
||||
with app.app_context():
|
||||
with get_cached_session() as session:
|
||||
admin_user = session.query(User).filter(User.role == 'admin').first()
|
||||
if admin_user:
|
||||
# Teste verschiedene Standard-Passwörter
|
||||
test_passwords = ['admin123', 'admin', 'password', 'test123']
|
||||
|
||||
for pwd in test_passwords:
|
||||
if admin_user.check_password(pwd):
|
||||
print(f"✅ Admin-Passwort gefunden: {pwd}")
|
||||
return pwd
|
||||
|
||||
print("❌ Kein Standard-Passwort funktioniert")
|
||||
|
||||
# Setze neues Passwort
|
||||
print(" Setze neues Admin-Passwort: admin123")
|
||||
admin_user.set_password('admin123')
|
||||
session.commit()
|
||||
print("✅ Neues Passwort gesetzt")
|
||||
return 'admin123'
|
||||
else:
|
||||
print("❌ Kein Admin-Benutzer gefunden")
|
||||
return None
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Passwort-Check-Fehler: {e}")
|
||||
return None
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_admin_decorator()
|
||||
test_template()
|
||||
check_admin_user_password()
|
||||
test_admin_route()
|
Reference in New Issue
Block a user