Files
john 1aaef71f52 Initial commit: Happy Up monorepo through Sprint 5.
Document-driven MVP with FastAPI backend, Vue H5, WeChat mini shell, product demo, and Docker dev stack.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 11:42:40 +08:00

33 lines
1.0 KiB
Python

from fastapi import APIRouter, HTTPException, Request
from fastapi.responses import JSONResponse
from app.core.response import error, ok
from app.db.session import get_db
from app.schemas.models import LoginRequest
from app.services import auth as auth_service
from sqlalchemy.orm import Session
from fastapi import Depends
router = APIRouter(prefix="/api/auth", tags=["Auth"])
@router.post("/login")
def login(body: LoginRequest, request: Request, db: Session = Depends(get_db)):
try:
user, token = auth_service.authenticate(db, body)
except ValueError as exc:
if str(exc) == "invalid_code":
return JSONResponse(
status_code=401,
content=error(10002, "invalid_verification_code", request.state.request_id),
)
return JSONResponse(
status_code=400,
content=error(10003, str(exc), request.state.request_id),
)
return ok(
{"token": token, "user": auth_service.user_to_dict(user)},
request_id=request.state.request_id,
)