diff --git a/apps/utils/permission.py b/apps/utils/permission.py index efe05610..a5e6d773 100755 --- a/apps/utils/permission.py +++ b/apps/utils/permission.py @@ -1,7 +1,7 @@ from django.core.cache import cache from rest_framework.permissions import BasePermission from apps.utils.queryset import get_child_queryset2 -from apps.system.models import DataFilter, Dept, Permission, PostRole, UserPost +from apps.system.models import DataFilter, Dept, Permission, PostRole, UserPost, User from django.db.models.query import QuerySet ALL_PERMS = [ @@ -41,6 +41,16 @@ def get_user_perms_map(user): return user_perms_map +def has_perm(user: User, perm_codes): + user_perms_map = cache.get(f'perms_{user.id}', None) + if user_perms_map is None: + user_perms_map = get_user_perms_map(user) + for item in perm_codes: + if item in user_perms_map: + return True + return False + + class RbacPermission(BasePermission): """ 基于角色的权限校验类