from fastapi import APIRouter, HTTPException, Depends from sqlalchemy.orm import Session from passlib.context import CryptContext from app.database import SessionLocal from app.models import User import jwt import os router = APIRouter() SECRET_KEY = "your_secret_key" pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") def get_db(): db = SessionLocal() try: yield db finally: db.close() @router.post("/register") def register(username: str, password: str, db: Session = Depends(get_db)): hashed_password = pwd_context.hash(password) user = User(username=username, password=hashed_password) db.add(user) db.commit() return {"message": "User registered"} @router.post("/login") def login(username: str, password: str, db: Session = Depends(get_db)): user = db.query(User).filter(User.username == username).first() if not user or not pwd_context.verify(password, user.password): raise HTTPException(status_code=401, detail="Invalid credentials") token = jwt.encode({"user_id": user.id}, SECRET_KEY, algorithm="HS256") return {"token": token}