Wie überprüfe ich Berechtigungen und andere Bedingungen in einer GraphQL-Abfrage?

Wie kann ich überprüfen, ob der Benutzer die Berechtigung zu @ hasehe oderAbfrag etwas? Ich habe keine Ahnung, wie das geht.

Imargs? Wie würde das überhaupt funktionieren?Imresolve()? Überprüfen Sie, ob der Benutzer über die Berechtigung verfügt, und beseitigen / ändern Sie einige der Argument

Beispiel

Wenn der Benutzer "Besucher" ist, kann er nur öffentliche Beiträge sehen, "Administrator" kann alles sehen.

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

Aktualisiere - Mungomodell sieht ungefähr so aus:

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)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage