From 0ebc411fd855cb01c48267c66e8467105a86240e Mon Sep 17 00:00:00 2001 From: Agent Zero Date: Tue, 4 Aug 2026 12:21:38 +0200 Subject: [PATCH] feat: Auto-seed admin user on container start - prestart.sh: runs seed_admin.py after migrations - seed_admin.py: reads ADMIN_EMAIL and ADMIN_PASSWORD from env vars - Creates default tenant + admin role + admin user if not exists --- prestart.sh | 3 +++ scripts/seed_admin.py | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/prestart.sh b/prestart.sh index 1cca4bb..1e993fa 100644 --- a/prestart.sh +++ b/prestart.sh @@ -100,6 +100,9 @@ asyncio.run(set_password()) " fi +echo "[prestart] Seeding admin user if not exists..." +python3 /app/scripts/seed_admin.py || echo "[prestart] WARNING: Admin seed failed (may already exist)" + echo "[prestart] Starting uvicorn on 0.0.0.0:8000 (workers=1)..." exec uvicorn app.main:app \ --host 0.0.0.0 \ diff --git a/scripts/seed_admin.py b/scripts/seed_admin.py index c4220c1..20a8654 100644 --- a/scripts/seed_admin.py +++ b/scripts/seed_admin.py @@ -69,12 +69,12 @@ async def seed(): print(f"Admin role exists: {role.id}") # Check if admin user exists - result = await db.execute(select(User).where(User.email == "admin@media-on.de")) + result = await db.execute(select(User).where(User.email == os.environ.get("ADMIN_EMAIL", "admin@media-on.de"))) user = result.scalar_one_or_none() if user is None: user = User( - email="admin@media-on.de", + email=os.environ.get("ADMIN_EMAIL", "admin@media-on.de"), name="Administrator", password_hash=hash_password(os.environ.get("ADMIN_PASSWORD", "Admin123!")), is_active=True,