feat: 用户接口权限校验增加列表接收参数,实现同一接口支持多个权限标识校验
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
from fastapi import Depends
|
from fastapi import Depends
|
||||||
|
from typing import Union, List
|
||||||
from module_admin.entity.vo.user_vo import CurrentUserModel
|
from module_admin.entity.vo.user_vo import CurrentUserModel
|
||||||
from module_admin.service.login_service import LoginService
|
from module_admin.service.login_service import LoginService
|
||||||
from exceptions.exception import PermissionException
|
from exceptions.exception import PermissionException
|
||||||
@@ -7,13 +8,25 @@ from exceptions.exception import PermissionException
|
|||||||
class CheckUserInterfaceAuth:
|
class CheckUserInterfaceAuth:
|
||||||
"""
|
"""
|
||||||
校验当前用户是否具有相应的接口权限
|
校验当前用户是否具有相应的接口权限
|
||||||
|
:param perm: 权限标识
|
||||||
|
:param is_strict: 当传入的权限标识是list类型时,是否开启严格模式,开启表示会校验列表中的每一个权限标识,所有的校验结果都需要为True才会通过
|
||||||
"""
|
"""
|
||||||
def __init__(self, perm_str: str = 'common'):
|
def __init__(self, perm: Union[str, List], is_strict: bool = False):
|
||||||
self.perm_str = perm_str
|
self.perm = perm
|
||||||
|
self.is_strict = is_strict
|
||||||
|
|
||||||
def __call__(self, current_user: CurrentUserModel = Depends(LoginService.get_current_user)):
|
def __call__(self, current_user: CurrentUserModel = Depends(LoginService.get_current_user)):
|
||||||
user_auth_list = current_user.permissions
|
user_auth_list = current_user.permissions
|
||||||
user_auth_list.append('common')
|
if '*:*:*' in user_auth_list:
|
||||||
if '*:*:*' in user_auth_list or self.perm_str in user_auth_list:
|
return True
|
||||||
|
if isinstance(self.perm, str):
|
||||||
|
if self.perm in user_auth_list:
|
||||||
|
return True
|
||||||
|
if isinstance(self.perm, list):
|
||||||
|
if self.is_strict:
|
||||||
|
if all([perm_str in user_auth_list for perm_str in self.perm]):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
if any([perm_str in user_auth_list for perm_str in self.perm]):
|
||||||
return True
|
return True
|
||||||
raise PermissionException(data="", message="该用户无此接口权限")
|
raise PermissionException(data="", message="该用户无此接口权限")
|
||||||
|
Reference in New Issue
Block a user