Files
xbxs/routers/auth.py

46 lines
1.1 KiB
Python

from datetime import datetime
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,
"year": datetime.now().year,
},
)
@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