DRF like permission system for django graphene
Project description
DGP - Django graphene permissions
Permission system inspired by DRF
Installation
Install the latest release:
$ pip3 install django-graphene-permissions
Or using pipenv
$ pipenv install django-graphene-permissions
Usage
Permission definition
You can create new permissions by subclassing BasePermission
e.g.
from django_graphene_permissions.permissions import BasePermission
class MyPermission(BasePermission):
@staticmethod
def has_permission(context):
return context.user and context.user.is_authenticated
@staticmethod
def has_object_permission(context, obj):
return True
This package provides predefined permissions :
AllowAny
: Allow any access.IsAuthenticated
: Allow only authenticated users.
Node Permission
Subclass PermissionDjangoObjectType
and define the permissions via the static method permission_classes
that should return an iterable of permission classes
from django_graphene_permissions import PermissionDjangoObjectType
from django_graphene_permissions.permissions import IsAuthenticated
class ExampleNode(PermissionDjangoObjectType):
class Meta:
model = Example
interfaces = (relay.Node,)
@staticmethod
def permission_classes():
return [IsAuthenticated]
Mutation Permission
Apply the permissions_checker([Permission,...])
decorator to mutate
e.g.
from django_graphene_permissions import permissions_checker
from django_graphene_permissions.permissions import IsAuthenticated
class ExampleDeleteMutation(graphene.Mutation):
ok = graphene.Boolean()
class Arguments:
id = graphene.ID()
@permissions_checker([IsAuthenticated])
def mutate(self, info, id):
instance = get_instance(id)
instance.delete()
return ExampleDeleteMutation(ok=True)
Query Permission
Apply the permissions_checker([Permission,...])
decorator to the field resolver e.g.
from django_graphene_permissions import permissions_checker
from django_graphene_permissions.permissions import IsAuthenticated
class Query(graphene.ObjectType):
post = relay.Node.Field(PostNode)
posts = DjangoFilterConnectionField(PostNode)
@permissions_checker([IsAuthenticated])
def resolve_posts(self, info, **kwargs):
return Post.objects.all()
TODO
- Improvements
- Tests
- Add a
PermissionDjangoFilterConnectionField
- Better docs
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for django_graphene_permissions-0.0.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ed879e9031519ed9f03d5a39794968374fccf9bbb8d89f0a91337b657285ccd |
|
MD5 | 645dbe1c97108655e2fb03cc10f5f18f |
|
BLAKE2b-256 | 748142f847d9b767155ba0dad3acbb007d38657a128b1f700dbc01de2e70df43 |
Close
Hashes for django_graphene_permissions-0.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 837d45f621c26fa8fba332139dfbd70aa80c54fba618b27357957360170203e4 |
|
MD5 | 5fc0af7e4a5a97e3edd1ed339ae70cda |
|
BLAKE2b-256 | 54b13600f6869e6f5ac55bb31b0e2a2c85272f14bb876f0700eda7289f8ed8b6 |