from sqlalchemy import create_engine, text import os from dotenv import load_dotenv import bcrypt # .env laden load_dotenv() DB_URL = f"mysql+pymysql://{os.getenv('DB_USER')}:{os.getenv('DB_PASSWORD')}@{os.getenv('DB_HOST')}:3306/{os.getenv('DB_NAME')}" engine = create_engine(DB_URL, isolation_level="AUTOCOMMIT") with engine.connect() as conn: # Default-Gruppe mit id=1 anlegen, falls nicht vorhanden result = conn.execute( text("SELECT COUNT(*) FROM client_groups WHERE id=1")) if result.scalar() == 0: conn.execute( text( "INSERT INTO client_groups (id, name, is_active) VALUES (1, 'Nicht zugeordnet', 1)") ) print("✅ Default-Gruppe mit id=1 angelegt.") # Superadmin-Benutzer anlegen, falls nicht vorhanden admin_user = os.getenv("DEFAULT_SUPERADMIN_USERNAME", "superadmin") admin_pw = os.getenv("DEFAULT_SUPERADMIN_PASSWORD") if not admin_pw: print("⚠️ DEFAULT_SUPERADMIN_PASSWORD nicht gesetzt. Superadmin wird nicht erstellt.") else: # Passwort hashen mit bcrypt hashed_pw = bcrypt.hashpw(admin_pw.encode( 'utf-8'), bcrypt.gensalt()).decode('utf-8') # Prüfen, ob User existiert result = conn.execute(text( "SELECT COUNT(*) FROM users WHERE username=:username"), {"username": admin_user}) if result.scalar() == 0: # Rolle: 'superadmin' gemäß UserRole enum conn.execute( text("INSERT INTO users (username, password_hash, role, is_active) VALUES (:username, :password_hash, 'superadmin', 1)"), {"username": admin_user, "password_hash": hashed_pw} ) print(f"✅ Superadmin-Benutzer '{admin_user}' angelegt.") else: print(f"ℹ️ Superadmin-Benutzer '{admin_user}' existiert bereits.")