46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
"""Seed demo user for authentication testing."""
|
|||
|
|
|
||
|
|
import os
|
||
|
|
from sqlalchemy.orm import Session
|
||
|
|
from app.database import SessionLocal, Base, engine
|
||
|
|
from app.models import User
|
||
|
|
from app.auth import hash_password
|
||
|
|
|
||
|
|
# Create tables
|
||
|
|
Base.metadata.create_all(bind=engine)
|
||
|
|
|
||
|
|
# Get demo credentials from environment
|
||
|
|
DEMO_EMAIL = os.getenv("DEMO_EMAIL", "demo@example.com")
|
||
|
|
DEMO_PASSWORD = os.getenv("DEMO_PASSWORD", "demo123")
|
||
|
|
DEMO_USERNAME = "demo"
|
||
|
|
|
||
|
|
|
||
|
|
def seed_demo_user():
|
||
|
|
"""Create demo user idempotently."""
|
||
|
|
db: Session = SessionLocal()
|
||
|
|
try:
|
||
|
|
# Check if demo user already exists
|
||
|
|
existing_user = db.query(User).filter(User.username == DEMO_USERNAME).first()
|
||
|
|
|
||
|
|
if existing_user:
|
||
|
|
# Update password if it exists
|
||
|
|
existing_user.hashed_password = hash_password(DEMO_PASSWORD)
|
||
|
|
db.commit()
|
||
|
|
print(f"Updated demo user: {DEMO_USERNAME}")
|
||
|
|
else:
|
||
|
|
# Create new demo user
|
||
|
|
demo_user = User(
|
||
|
|
username=DEMO_USERNAME,
|
||
|
|
email=DEMO_EMAIL,
|
||
|
|
hashed_password=hash_password(DEMO_PASSWORD)
|
||
|
|
)
|
||
|
|
db.add(demo_user)
|
||
|
|
db.commit()
|
||
|
|
print(f"Created demo user: {DEMO_USERNAME}")
|
||
|
|
finally:
|
||
|
|
db.close()
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
seed_demo_user()
|