from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from .. import crud, schemas, auth as auth_utils from ..db import get_db router = APIRouter() @router.post("/register", response_model=schemas.UserRead) def register(user_in: schemas.UserCreate, db: Session = Depends(get_db)): existing_user = crud.get_user_by_email(db, email=user_in.email) if existing_user: raise HTTPException(status_code=400, detail="Email already registered") user = crud.create_user(db, user_in) return user @router.post("/login", response_model=schemas.Token) def login(form_data: schemas.Login, db: Session = Depends(get_db)): user = crud.authenticate_user(db, email=form_data.email, password=form_data.password) if not user: raise HTTPException(status_code=401, detail="Incorrect email or password") access_token = auth_utils.create_access_token(data={"sub": str(user.id)}) return {"access_token": access_token, "token_type": "bearer"}