39 lines
1.6 KiB
Python
39 lines
1.6 KiB
Python
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.")
|
|
|
|
# Admin-Benutzer anlegen, falls nicht vorhanden
|
|
admin_user = os.getenv("DEFAULT_ADMIN_USERNAME", "infoscreen_admin")
|
|
admin_pw = os.getenv("DEFAULT_ADMIN_PASSWORD", "Info_screen_admin25!")
|
|
# Passwort hashen wie in init_db.py
|
|
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: 1 = Admin (ggf. anpassen je nach Modell)
|
|
conn.execute(
|
|
text("INSERT INTO users (username, password_hash, role, is_active) VALUES (:username, :password_hash, 1, 1)"),
|
|
{"username": admin_user, "password_hash": hashed_pw}
|
|
)
|
|
print(f"✅ Admin-Benutzer '{admin_user}' angelegt.")
|