Como verificar permissões e outras condições na consulta GraphQL?

Como posso verificar se o usuário tem permissão paraVejo ouinquerir alguma coisa? Eu não tenho nenhuma idéia de como fazer isso.

Noargs? Como isso funcionaria?Noresolve()? Veja se o usuário tem permissão e de alguma forma elimina / altera alguns dos argumentos?

Exemplo:

Se o usuário for "visitante", ele poderá ver apenas postagens públicas, "admin" poderá ver tudo.

const userRole = 'admin';  // Let's say this could be "admin" or "visitor"

const Query = new GraphQLObjectType({
    name: 'Query',
    fields: () => {
        return {
            posts: {
                type: new GraphQLList(Post),
                args: {
                    id: {
                        type: GraphQLString
                    },
                    title: {
                        type: GraphQLString
                    },
                    content: {
                        type: GraphQLString
                    },
                    status: {
                        type: GraphQLInt  // 0 means "private", 1 means "public"
                    },
                },

                // MongoDB / Mongoose magic happens here
                resolve(root, args) {
                    return PostModel.find(args).exec()
                }
            }
        }
    }
})

Atualizar - O modelo Mongoose se parece com isso:

import mongoose from 'mongoose'

const postSchema = new mongoose.Schema({
    title: {
        type: String
    },
    content: {
        type: String
    },
    author: {
        type: mongoose.Schema.Types.ObjectId,  // From user model/collection
        ref: 'User'
    },
    date: {
        type: Date,
        default: Date.now
    },
    status: {
        type: Number,
        default: 0    // 0 -> "private", 1 -> "public"
    },
})

export default mongoose.model('Post', postSchema)

questionAnswers(2)

yourAnswerToTheQuestion