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
Release files for django-graphene-permissions 0.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django_graphene_permissions-0.0.4.tar.gz | 3.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_graphene_permissions-0.0.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 8.6 kB
Release files / django_graphene_permissions-0.0.4.tar.gz
| Download URL | django_graphene_permissions-0.0.4.tar.gz |
|---|---|
| Size | 3.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5ed879e9031519ed9f03d5a39794968374fccf9bbb8d89f0a91337b657285ccd
|
|
BLAKE2b-256 checksum How to use checksums |
748142f847d9b767155ba0dad3acbb007d38657a128b1f700dbc01de2e70df43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6
|
Release files / django_graphene_permissions-0.0.4-py3-none-any.whl
| Download URL | django_graphene_permissions-0.0.4-py3-none-any.whl |
|---|---|
| Size | 5.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
837d45f621c26fa8fba332139dfbd70aa80c54fba618b27357957360170203e4
|
|
BLAKE2b-256 checksum How to use checksums |
54b13600f6869e6f5ac55bb31b0e2a2c85272f14bb876f0700eda7289f8ed8b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6
|