Add anonymous user support to the acl model manager methods
This commit is contained in:
@@ -9,6 +9,8 @@ from django.contrib.contenttypes.models import ContentType
|
|||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.core.exceptions import PermissionDenied
|
from django.core.exceptions import PermissionDenied
|
||||||
|
|
||||||
|
from common.models import AnonymousUserSingleton
|
||||||
|
|
||||||
from .classes import EncapsulatedObject, AccessHolder, ClassAccessHolder
|
from .classes import EncapsulatedObject, AccessHolder, ClassAccessHolder
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -65,6 +67,8 @@ class AccessEntryManager(models.Manager):
|
|||||||
if actor.is_superuser or actor.is_staff:
|
if actor.is_superuser or actor.is_staff:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
actor = AnonymousUserSingleton.objects.passthru_check(actor)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
access_entry = self.model.objects.get(
|
access_entry = self.model.objects.get(
|
||||||
permission=permission.get_stored_permission(),
|
permission=permission.get_stored_permission(),
|
||||||
@@ -97,7 +101,8 @@ class AccessEntryManager(models.Manager):
|
|||||||
|
|
||||||
def get_allowed_class_objects(self, permission, actor, cls, related=None):
|
def get_allowed_class_objects(self, permission, actor, cls, related=None):
|
||||||
logger.debug('related: %s' % related)
|
logger.debug('related: %s' % related)
|
||||||
|
|
||||||
|
actor = AnonymousUserSingleton.objects.passthru_check(actor)
|
||||||
actor_type = ContentType.objects.get_for_model(actor)
|
actor_type = ContentType.objects.get_for_model(actor)
|
||||||
content_type = ContentType.objects.get_for_model(cls)
|
content_type = ContentType.objects.get_for_model(cls)
|
||||||
if related:
|
if related:
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ from .managers import AccessEntryManager, DefaultAccessEntryManager
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class AccessEntry(models.Model):
|
class AccessEntry(models.Model):
|
||||||
'''
|
'''
|
||||||
Model that hold the permission, object, actor relationship
|
Model that hold the permission, object, actor relationship
|
||||||
|
|||||||
Reference in New Issue
Block a user