Files
loon-backend/loon/web/auth/router.py
T
ciomek 279b2a7e90
Build and Push Docker Image / build-and-push (push) Successful in 18s
Initial commit
2026-08-16 11:41:07 +02:00

27 lines
975 B
Python

from fastapi import APIRouter, HTTPException, status
from sqlmodel import Session, select
from loon.web.auth.schema import JWTResponse, JWTRequest
from loon.web.db import engine
from loon.web.users.models import User
from loon.web.utils.jwt import generate_token
from loon.web.utils.password import verify_password
router = APIRouter(prefix="/auth", tags=["auth"])
@router.post("/jwt/", response_model=JWTResponse)
async def get_jwt(body: JWTRequest) -> JWTResponse:
with Session(engine) as session:
statement = select(User).where(User.internal_username == body.username)
user = session.exec(statement).first()
if user is None or not verify_password(body.password, user.password):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Invalid username or password",
)
assert user.id is not None
return JWTResponse(access_token=generate_token(user.id))