You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

35 lines
1.0 KiB

from django.core.exceptions import PermissionDenied
from authentication.backends.base import JMSBaseAuthBackend
class RBACBackend(JMSBaseAuthBackend):
""" 只做权限校验 """
@staticmethod
def is_enabled():
return True
def authenticate(self, *args, **kwargs):
return None
def username_allow_authenticate(self, username):
return False
def has_perm(self, user_obj, perm, obj=None):
if not user_obj.is_active or not perm:
raise PermissionDenied()
if perm == '*':
return True
if isinstance(perm, str):
perm_set = set(i.strip() for i in perm.split('|'))
elif isinstance(perm, (list, tuple, set)):
perm_set = set(perm)
else:
raise ValueError('perm must be str, list, tuple or set')
has_perm = bool(perm_set & set(user_obj.perms))
if not has_perm:
raise PermissionDenied()
return has_perm
# def has_module_perms(self, user_obj, app_label):
# return True