from rbac.permission import RbacPermission from rbac.permission import get_permission_list from rbac.models import UserProfile from crm.models import Consumer from rest_framework.permissions import IsAuthenticated # 学员接口列表 ConsumerPerms = [ 'paper_list', 'gen_monitest', 'my_collects', 'my_paid', 'examtest_selftest', 'examtest_selffx', 'examtest_create', 'questioncat_list' ] class MyPermission(RbacPermission): def has_permission(self, request, view): """ 权限校验逻辑 :param request: :param view: :return: """ perms = [] if 'perms' in request.session: perms = request.session['perms'] elif isinstance(request.user,UserProfile): # 如果是管理员表 perms = get_permission_list(request.user) elif isinstance(request.user,Consumer): perms = ConsumerPerms if perms: if 'admin' in perms: return True elif not hasattr(view, 'perms_map'): return True else: perms_map = view.perms_map _method = request._request.method.lower() for i in perms_map: for method, alias in i.items(): if (_method == method or method == '*') and alias in perms: return True return False