good version for web

This commit is contained in:
2026-02-18 09:36:18 +08:00
parent 62ea5d36a5
commit 72ab0c0b56
42 changed files with 1305 additions and 1515 deletions

View File

@@ -5,13 +5,14 @@
from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer
from sqlalchemy.orm import Session
from typing import Optional
from app.models.database import get_db
from app.services.user import UserService
from app.schemas.user import UserResponse
# OAuth2密码Bearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/v1/users/login")
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/v1/users/login", auto_error=False)
async def get_current_active_user(db: Session = Depends(get_db), token: str = Depends(oauth2_scheme)):
@@ -25,4 +26,19 @@ async def get_current_active_user(db: Session = Depends(get_db), token: str = De
)
if hasattr(user, 'status') and user.status != "active":
raise HTTPException(status_code=400, detail="Inactive user")
return user
return user
async def get_current_active_user_optional(db: Session = Depends(get_db), token: Optional[str] = Depends(oauth2_scheme)):
"""获取当前活跃用户可选未登录返回None"""
if not token:
return None
try:
user = UserService.get_current_user(db, token)
if not user:
return None
if hasattr(user, 'status') and user.status != "active":
return None
return user
except:
return None