跳转到主要内容

为django graphene设计的类似DRF的权限系统

项目描述

DGP - Django graphene权限

受DRF启发的权限系统

安装

安装最新版本

$ pip3 install django-graphene-permissions

或使用pipenv

$ pipenv install django-graphene-permissions

用法

权限定义


您可以通过扩展 BasePermission 来创建新权限,例如。

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

本软件包提供预定义权限

  • AllowAny : 允许任何访问。
  • IsAuthenticated : 仅允许已验证用户。

节点权限


扩展 PermissionDjangoObjectType 并通过静态方法 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]

突变权限


permissions_checker([Permission,...]) 装饰器应用于 mutate 例如。

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)

查询权限


permissions_checker([Permission,...]) 装饰器应用于字段解析器,例如。

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()

待办事项

  • 改进
  • 测试
  • 添加 PermissionDjangoFilterConnectionField
  • 更好的文档

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源分布

django_graphene_permissions-0.0.4.tar.gz (3.1 kB 查看哈希值)

上传时间 源码

构建分发版

django_graphene_permissions-0.0.4-py3-none-any.whl (5.4 kB 查看哈希值)

上传时间 Python 3

由以下支持