Files
YG_FT/backend/app/modules/auth/router.py
wangjiming 242407b676 update
2026-07-31 16:10:34 +08:00

43 lines
1.2 KiB
Python

from __future__ import annotations
from fastapi import APIRouter, Depends, HTTPException, status
from pydantic import BaseModel
from app.db.platform_store import get_platform_store
from app.modules.auth.deps import get_current_user
from app.modules.auth.service import create_access_token
router = APIRouter()
class LoginBody(BaseModel):
username: str
password: str
class LogoutBody(BaseModel):
session_id: str | None = None
@router.post("/login")
def login(body: LoginBody) -> dict:
store = get_platform_store()
user = store.login(body.username, body.password)
if not user:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="用户名或密码错误")
token = create_access_token(user["id"])
session_id = store.create_session(user)
return {"code": 0, "message": "ok", "data": {"token": token, "user": user, "session_id": session_id}}
@router.post("/logout")
def logout(body: LogoutBody) -> dict:
get_platform_store().close_session(body.session_id)
return {"code": 0, "message": "ok", "data": None}
@router.get("/me")
def me(current_user: dict = Depends(get_current_user)) -> dict:
return {"code": 0, "message": "ok", "data": current_user}