Files
TradeMate Dev 04f7ff0317 fix: CORS/API 500 issues, switch to native tabbar, restore quick-actions
- Backend: guest UUID format fix, /auth/me guest branch, UUID validation in deps.py, CORS config fix
- Frontend: switch to native tabbar (custom: false), cleanup App.vue, redesign quick-actions with colored icons, conditional wechat login, proxy API requests via Vite
2026-05-13 17:54:13 +08:00

54 lines
1.6 KiB
Python

from fastapi import HTTPException, Depends, Header
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
from app.core.security import decode_token
from typing import Optional
import uuid
security = HTTPBearer(auto_error=False)
async def get_current_user_id(
authorization: Optional[str] = Header(None, alias="Authorization"),
cred: Optional[HTTPAuthorizationCredentials] = Depends(security),
) -> str:
token = None
if cred:
token = cred.credentials
elif authorization and authorization.startswith("Bearer "):
token = authorization[7:]
if not token:
raise HTTPException(status_code=401, detail="Missing or invalid token")
payload = decode_token(token)
if not payload:
raise HTTPException(status_code=401, detail="Invalid or expired token")
user_id = payload.get("sub")
if not user_id:
raise HTTPException(status_code=401, detail="Invalid token payload")
try:
uuid.UUID(user_id)
except (ValueError, AttributeError):
raise HTTPException(status_code=401, detail="Token expired, please login again")
return user_id
async def get_current_user(
cred: HTTPAuthorizationCredentials = Depends(security),
) -> dict:
if not cred:
raise HTTPException(status_code=401, detail="Missing or invalid token")
payload = decode_token(cred.credentials)
if not payload:
raise HTTPException(status_code=401, detail="Invalid or expired token")
return {
"id": payload.get("sub"),
"tier": payload.get("tier", "free"),
"role": payload.get("role", "user"),
}