From 8d37a15aa7a6461affedce712b4fa23004c5b314 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 11 Oct 2023 15:30:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0has=5Fperm=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/utils/permission.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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): """ 基于角色的权限校验类