This project enable Graphene Django to use Django Permissions and give some mixins to implement permissions.
For instaling authorization package, just run this command in your shell
pip install graphene-django-authorization
Example permission required in Node using AuthNodeMixin
.
from graphene_django.auth.mixins import AuthNodeMixin
from .models import Post
class PostNode(AuthNodeMixin, DjangoObjectType):
_permission = ('app.add_post', 'app.delete_post',)
class Meta:
model = Post
only_fields = ('title', 'content')
interfaces = (relay.Node, )
Example permission required in Mutation using AuthMutationMixin
.
from graphene_django.auth.mixins import AuthMutationMixin
class CreatePet(AuthMutationMixin, graphene.Mutation):
_permission = ('app.add_pet', 'app.delete_pet')
pet = graphene.Field(PetNode)
class Input:
name = graphene.String(required=True)
@classmethod
def mutate(cls, root, input, context, info):
# Auth Required Virification
if cls.has_permision(context) is not True:
return cls.has_permision(context)
# End Auth
pet_name = input.get('name')
pet = Pet.objects.create(name=pet_name)
return CreatePet(pet=pet)
pip install -e ".[test]"