Skip to content

Commit

Permalink
feat!: Rename HasScopedPermissionMixin → ScopedPermissionHolder
Browse files Browse the repository at this point in the history
  • Loading branch information
tOgg1 committed Dec 30, 2020
1 parent 7da7730 commit 219edac
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 15 deletions.
4 changes: 2 additions & 2 deletions django_scoped_permissions/backends.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from django.contrib.auth.backends import ModelBackend
from django.contrib.auth.models import AbstractUser

from django_scoped_permissions.models import HasScopedPermissionsMixin, ScopedModelMixin
from django_scoped_permissions.models import ScopedPermissionHolder, ScopedModelMixin


class ScopedAuthenticationBackend(ModelBackend):
Expand All @@ -12,7 +12,7 @@ def has_perm(self, user_obj: AbstractUser, perm: str, obj=None):
if user_obj.is_superuser:
return True

if not isinstance(user_obj, HasScopedPermissionsMixin):
if not isinstance(user_obj, ScopedPermissionHolder):
return None

if not obj:
Expand Down
16 changes: 8 additions & 8 deletions django_scoped_permissions/graphql.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
create_resolver_from_method,
create_resolver_from_scopes,
)
from django_scoped_permissions.models import HasScopedPermissionsMixin, ScopedModelMixin
from django_scoped_permissions.models import ScopedPermissionHolder, ScopedModelMixin


class ScopedDjangoNodeOptions(DjangoObjectTypeOptions):
Expand Down Expand Up @@ -124,7 +124,7 @@ def check_permissions(cls, root, info, input) -> None:

expanded_permissions = expand_scopes_from_context(permissions, context)

if not isinstance(info.context.user, HasScopedPermissionsMixin):
if not isinstance(info.context.user, ScopedPermissionHolder):
raise GraphQLError("You are not permitted to view this.")

if not info.context.user.has_scoped_permissions(*expanded_permissions):
Expand All @@ -145,7 +145,7 @@ def check_permissions(cls, root, info, input) -> None:

expanded_permissions = expand_scopes_from_context(permissions, context)

if not isinstance(info.context.user, HasScopedPermissionsMixin):
if not isinstance(info.context.user, ScopedPermissionHolder):
raise GraphQLError("You are not permitted to view this.")

if not info.context.user.has_scoped_permissions(*expanded_permissions):
Expand Down Expand Up @@ -192,7 +192,7 @@ def check_permissions(cls, root, info, input, id, obj) -> None:

expanded_permissions = expand_scopes_from_context(permissions, context)

if not isinstance(info.context.user, HasScopedPermissionsMixin):
if not isinstance(info.context.user, ScopedPermissionHolder):
raise GraphQLError("You are not permitted to view this.")

if not info.context.user.has_scoped_permissions(*expanded_permissions):
Expand Down Expand Up @@ -250,7 +250,7 @@ def check_permissions(cls, root, info, input, id, obj) -> None:

expanded_permissions = expand_scopes_from_context(permissions, context)

if not isinstance(info.context.user, HasScopedPermissionsMixin):
if not isinstance(info.context.user, ScopedPermissionHolder):
raise GraphQLError("You are not permitted to view this.")

if not info.context.user.has_scoped_permissions(*expanded_permissions):
Expand Down Expand Up @@ -308,7 +308,7 @@ def check_permissions(cls, root, info, id, obj) -> None:

expanded_permissions = expand_scopes_from_context(permissions, context)

if not isinstance(info.context.user, HasScopedPermissionsMixin):
if not isinstance(info.context.user, ScopedPermissionHolder):
raise GraphQLError("You are not permitted to view this.")

if not info.context.user.has_scoped_permissions(*expanded_permissions):
Expand Down Expand Up @@ -341,7 +341,7 @@ def check_permissions(cls, root, info, input) -> None:

expanded_permissions = expand_scopes_from_context(permissions, context)

if not isinstance(info.context.user, HasScopedPermissionsMixin):
if not isinstance(info.context.user, ScopedPermissionHolder):
raise GraphQLError("You are not permitted to view this.")

if not info.context.user.has_scoped_permissions(*expanded_permissions):
Expand All @@ -363,7 +363,7 @@ def check_permissions(cls, root, info, input) -> None:

expanded_permissions = expand_scopes_from_context(permissions, context)

if not isinstance(info.context.user, HasScopedPermissionsMixin):
if not isinstance(info.context.user, ScopedPermissionHolder):
raise GraphQLError("You are not permitted to view this.")

if not info.context.user.has_scoped_permissions(*expanded_permissions):
Expand Down
29 changes: 27 additions & 2 deletions django_scoped_permissions/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,29 @@ def __str__(self):
return self.name


class HasScopedPermissionsMixin(models.Model):
class ScopedPermissionHolderMixin(object):

def get_granting_scopes(self):
return []

def has_scoped_permissions(self, *required_scopes):
return self.has_any_scoped_permissions(*required_scopes)

def has_any_scoped_permissions(self, *required_scopes):
scopes = self.get_granting_scopes()

return scopes_grant_permissions(required_scopes, scopes)

def has_all_scoped_permissions(self, *required_scopes):
scopes = self.get_granting_scopes()

for scope in required_scopes:
if not any_scope_matches([scope], scopes):
return False

return True

class ScopedPermissionHolder(models.Model, ScopedPermissionHolderMixin):
class Meta:
abstract = True

Expand Down Expand Up @@ -138,6 +160,9 @@ def add_or_create_permission(
self.scoped_permissions.add(scope)


# DEPRECATED: Use ScopedPermissionHolder
HasScopedPermissionMixin = ScopedPermissionHolder

class ScopedModelMixin:
def get_base_scopes(self):
"""
Expand All @@ -149,7 +174,7 @@ def get_required_scopes(self):
return []

def has_permission(
self, user: HasScopedPermissionsMixin, action: Optional[str] = None
self, user: ScopedPermissionHolderMixin, action: Optional[str] = None
):
if getattr(user, "is_superuser", False):
return True
Expand Down
6 changes: 3 additions & 3 deletions django_scoped_permissions/tests/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
from django.db import models

from django_scoped_permissions.core import create_scope
from django_scoped_permissions.models import HasScopedPermissionsMixin, ScopedModelMixin
from django_scoped_permissions.models import ScopedPermissionHolder, ScopedModelMixin


class User(HasScopedPermissionsMixin, AbstractUser):
class User(ScopedPermissionHolder, AbstractUser):
class Meta:
indexes = (models.Index(fields=("email",)),)

Expand Down Expand Up @@ -54,7 +54,7 @@ def __str__(self):
return self.name


class UserType(HasScopedPermissionsMixin, ScopedModelMixin, models.Model):
class UserType(ScopedPermissionHolder, ScopedModelMixin, models.Model):
class Meta:
pass

Expand Down

0 comments on commit 219edac

Please sign in to comment.