Princeaka's picture
Upload 14 files
220d87f verified
raw
history blame
1.22 kB
from fastapi import APIRouter, HTTPException, Depends
from sqlalchemy.orm import Session
from ..schemas import UserCreate, UserOut, LoginIn, Token
from ..models import User
from ..database import get_db
from ..core.security import hash_password, verify_password, create_access_token
router = APIRouter(prefix="/api/auth", tags=["Auth"])
@router.post("/signup", response_model=Token)
def signup(payload: UserCreate, db: Session = Depends(get_db)):
if db.query(User).filter(User.email == payload.email).first():
raise HTTPException(status_code=400, detail="User already exists")
user = User(email=payload.email, password_hash=hash_password(payload.password))
db.add(user)
db.commit()
db.refresh(user)
token = create_access_token(sub=user.email)
return {"access_token": token}
@router.post("/login", response_model=Token)
def login(payload: LoginIn, db: Session = Depends(get_db)):
user = db.query(User).filter(User.email == payload.email).first()
if not user or not verify_password(payload.password, user.password_hash):
raise HTTPException(status_code=401, detail="Invalid credentials")
token = create_access_token(sub=user.email)
return {"access_token": token}