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