39 lines
1.0 KiB
Python
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
|