"""Seed admin user for YakPanel""" import asyncio import sys import os # Run from backend directory backend_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) os.chdir(backend_dir) sys.path.insert(0, backend_dir) from sqlalchemy import select from app.core.database import AsyncSessionLocal, init_db from app.core.security import get_password_hash from app.models.user import User async def seed(*, reset_password: bool = False): await init_db() async with AsyncSessionLocal() as db: result = await db.execute(select(User).where(User.username == "admin")) existing = result.scalar_one_or_none() if existing: if reset_password: existing.password = get_password_hash("admin") existing.is_active = True await db.commit() print("Admin password reset: username=admin, password=admin") else: print("Admin user already exists (use --reset-password to force admin/admin)") return admin = User( username="admin", password=get_password_hash("admin"), is_superuser=True, ) db.add(admin) await db.commit() print("Admin user created: username=admin, password=admin") if __name__ == "__main__": reset = "--reset-password" in sys.argv asyncio.run(seed(reset_password=reset))