diff options
Diffstat (limited to 'ishtar_common/backend.py')
-rw-r--r-- | ishtar_common/backend.py | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/ishtar_common/backend.py b/ishtar_common/backend.py index 7ebdab221..0febd61b2 100644 --- a/ishtar_common/backend.py +++ b/ishtar_common/backend.py @@ -21,22 +21,18 @@ Permission backend to manage "own" objects """ -from django.conf import settings -from django.contrib.auth.models import User +from django.contrib.auth.backends import ModelBackend from django.core.exceptions import ObjectDoesNotExist from django.db.models.loading import cache import models -class ObjectPermBackend(object): + +class ObjectPermBackend(ModelBackend): supports_object_permissions = True supports_anonymous_user = True - def authenticate(self, username, password): - # managed by the default backend - return None - - def has_perm(self, user_obj, perm, model=None, obj=None): + def has_perm(self, user_obj, perm, model=None, obj=None, session=None): if not user_obj.is_authenticated(): return False if not model: @@ -50,10 +46,10 @@ class ObjectPermBackend(object): is_ownperm = perm.split('.')[-1].split('_')[1] == 'own' except IndexError: is_ownperm = False - if ishtar_user.has_right('administrator'): + if ishtar_user.has_right('administrator', session=session): return True - main_right = ishtar_user.person.has_right(perm) \ - or user_obj.has_perm(perm) + main_right = ishtar_user.person.has_right(perm, session=session) \ + or user_obj.has_perm(perm) if not main_right or not is_ownperm: return main_right if obj is None: |