| 1234567891011121314151617181920212223242526272829303132333435 |
- """
- 依赖注入
- """
- from fastapi import Depends, HTTPException, status
- from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
- from sqlalchemy.orm import Session
- from app.database import get_db
- from app.core.security import verify_token
- from app.models.admin import Admin
- security = HTTPBearer()
- def get_current_admin(
- credentials: HTTPAuthorizationCredentials = Depends(security),
- db: Session = Depends(get_db)
- ) -> Admin:
- """获取当前管理员"""
- token = credentials.credentials
- payload = verify_token(token)
- if not payload:
- raise HTTPException(
- status_code=status.HTTP_401_UNAUTHORIZED,
- detail="无效的令牌"
- )
-
- username = payload.get("sub")
- admin = db.query(Admin).filter(Admin.username == username).first()
- if not admin or admin.status != 1:
- raise HTTPException(
- status_code=status.HTTP_401_UNAUTHORIZED,
- detail="管理员不存在或已被禁用"
- )
-
- return admin
|