Browse Source

feat: 用户接口权限校验增加列表接收参数,实现同一接口支持多个权限标识校验

master
insistence 12 months ago
parent
commit
3361fca5d2
  1. 21
      ruoyi-fastapi-backend/module_admin/aspect/interface_auth.py

21
ruoyi-fastapi-backend/module_admin/aspect/interface_auth.py

@ -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="该用户无此接口权限")

Loading…
Cancel
Save