清理项目配置文件,移除不再使用的.idea文件和更新文档中的Python版本要求
This commit is contained in:
@@ -1,19 +1,18 @@
|
||||
from typing import Annotated, Literal
|
||||
from typing import Annotated
|
||||
from fastapi import Depends
|
||||
from fastapi import HTTPException
|
||||
import JWT
|
||||
import jwt
|
||||
from jwt import InvalidTokenError
|
||||
from model import database
|
||||
from sqlmodel.ext.asyncio.session import AsyncSession
|
||||
from model import User
|
||||
|
||||
from model.user import UserTypeEnum
|
||||
from .user import get_current_user
|
||||
from pkg import utils
|
||||
from model import User
|
||||
from model import database
|
||||
|
||||
# 验证是否为管理员
|
||||
async def is_admin(
|
||||
token: Annotated[str, Depends(get_current_user)],
|
||||
session: Annotated[AsyncSession, Depends(database.Database.get_session)],
|
||||
) -> Literal[True]:
|
||||
) -> User:
|
||||
'''
|
||||
验证是否为管理员。
|
||||
|
||||
@@ -21,14 +20,25 @@ async def is_admin(
|
||||
>>> APIRouter(dependencies=[Depends(is_admin)])
|
||||
'''
|
||||
|
||||
not_admin_exception = HTTPException(
|
||||
status_code=403,
|
||||
detail="Admin access required",
|
||||
headers={"WWW-Authenticate": "Bearer"},
|
||||
)
|
||||
user = await get_current_user(token, session)
|
||||
if user.role == UserTypeEnum.normal_user:
|
||||
utils.raise_forbidden("Admin access required")
|
||||
else:
|
||||
return user
|
||||
|
||||
async def is_super_admin(
|
||||
token: Annotated[str, Depends(is_admin)],
|
||||
session: Annotated[AsyncSession, Depends(database.Database.get_session)],
|
||||
) -> User:
|
||||
'''
|
||||
验证是否为超级管理员。
|
||||
|
||||
使用方法:
|
||||
>>> APIRouter(dependencies=[Depends(is_super_admin)])
|
||||
'''
|
||||
|
||||
user = await get_current_user(token, session)
|
||||
if not user.is_admin:
|
||||
raise not_admin_exception
|
||||
if user.role != UserTypeEnum.super_admin:
|
||||
utils.raise_forbidden("Super admin access required")
|
||||
else:
|
||||
return True
|
||||
return user
|
||||
Reference in New Issue
Block a user