feat: add tenant-scoped rule and permission management
This commit is contained in:
@@ -17,8 +17,26 @@ from fastapi_modules.fastapi_leaudit.services.permissionService import IPermissi
|
||||
class PermissionServiceImpl(IPermissionService):
|
||||
"""权限检查服务实现。"""
|
||||
|
||||
_GLOBAL_PERMISSION_CACHE: dict[int, tuple[float, tuple[set[str], set[str]]]] = {}
|
||||
|
||||
def __init__(self) -> None:
|
||||
self._permission_cache: dict[int, tuple[float, tuple[set[str], set[str]]]] = {}
|
||||
self._permission_cache = self.__class__._GLOBAL_PERMISSION_CACHE
|
||||
|
||||
@classmethod
|
||||
def InvalidateUser(cls, UserId: int) -> None:
|
||||
"""清理指定用户权限缓存。"""
|
||||
cls._GLOBAL_PERMISSION_CACHE.pop(UserId, None)
|
||||
|
||||
@classmethod
|
||||
def InvalidateUsers(cls, UserIds: list[int]) -> None:
|
||||
"""批量清理用户权限缓存。"""
|
||||
for userId in UserIds:
|
||||
cls.InvalidateUser(int(userId))
|
||||
|
||||
@classmethod
|
||||
def InvalidateAll(cls) -> None:
|
||||
"""清理全部权限缓存。角色权限批量变更后使用。"""
|
||||
cls._GLOBAL_PERMISSION_CACHE.clear()
|
||||
|
||||
async def CheckPermission(self, UserId: int, PermissionKey: str) -> bool:
|
||||
"""检查用户是否拥有指定权限。
|
||||
|
||||
Reference in New Issue
Block a user