Files
xbxs/routers/auth.py
2025-12-14 22:21:03 +08:00

39 lines
1.0 KiB
Python

from fastapi import APIRouter, Request, Response
from fastapi.responses import JSONResponse, RedirectResponse
from models import User
from services.services import XBXS
from starlette.templating import Jinja2Templates
router = APIRouter()
templates = Jinja2Templates(directory="templates")
@router.get("/")
async def index(request: Request):
token = request.cookies.get("xbxs_token")
if token:
return RedirectResponse("/home")
return templates.TemplateResponse("login.html", {"request": request})
@router.post("/login")
async def login(user: User, response: Response):
xbxs = XBXS()
result = await xbxs.login(username=user.username, password=user.password)
token = result.get("token")
if not token:
return JSONResponse({"msg": "登录失败"}, status_code=401)
resp = JSONResponse({"msg": "ok"})
resp.set_cookie(
key="xbxs_token",
value=token,
max_age=60 * 60 * 24 * 7, # 7 天
httponly=False,
samesite="lax",
)
return resp