Django GrahpQL ACL?

Django GrahpQL ACL?

是否有 Django GraphQL ACL?就像你不能访问 Query/Mutation 如果用户没有权限。

例如,登录用户只有产品权限Query/Mutation,没有人力资源权限Query/Mutation。我怎样才能 return 出现“权限被拒绝!”之类的错误消息?

如果您使用 graphene-django-cud(用于突变),如果您不希望特定用户执行某些操作,则 check_permissions hook that you can hook into 会引发错误。

from graphene_django_cud.mutations import DjangoUpdateMutation
from graphql import GraphQLError

class UpdateUserMutation(DjangoUpdateMutation):
    class Meta:
        model = User
        login_required = True

    @classmethod
    def check_permissions(cls, root, info, input, id, obj):
        if not can_update(obj, info.context.user):
            raise GraphQLError("You do not have permission to access this mutation.")

需要注意的事项:请注意 check_permissions 的参数在他们的文档(上面链接)中是错误的。我在片段中写了正确的参数。他们的 github 是正确的。

与此类似,当您查询时,在您常用的解析器中执行以下操作:

def resolve_users(cls, root, info, id=None):
    user_obj = User.objects.get(id=id)

    if not can_view(user_obj, info.context.user):
        raise GraphQLError("You shall not pass")
    
    return user_obj