У меня есть базовый сервер graphql-yoga, который пропускает поле через соединение Prisma Relay.По какой-то причине свойство агрегата говорит, что я не авторизован, хотя все остальные поля работают правильно.Я также могу вызвать агрегат с игровой площадки Prisma.
index.ts
const server = new GraphQLServer({
schema,
middlewares: [permissions],
context: request => {
return {
...request,
prisma,
}
},
})
server.start(() => console.log(`? Server ready at http://localhost:4000`))
permissions / index.ts
import { rule, shield } from 'graphql-shield'
import { getUserId } from '../utils'
const rules = {
isAuthenticatedUser: rule()((parent, args, context) => {
const userId = getUserId(context)
return Boolean(userId)
}),
isPostOwner: rule()(async (parent, { id }, context) => {
const userId = getUserId(context)
const author = await context.prisma.post({ id }).author()
return userId === author.id
}),
}
export const permissions = shield({
Query: {
me: rules.isAuthenticatedUser,
filterPosts: rules.isAuthenticatedUser,
post: rules.isAuthenticatedUser,
},
Mutation: {
createDraft: rules.isAuthenticatedUser,
deletePost: rules.isPostOwner,
publish: rules.isPostOwner,
},
})
resolvers / Query.ts
export const Query = prismaObjectType({
name: 'Query',
t.prismaFields(['postsConnection'])
});
Ошибка: не авторизован!в normalizeOptions (C: \ project \ server \ node_modules \ graphql-shield \ src \ shield.ts: 32: 32)
at Object.shield (C:\project\server\node_modules\graphql-shield\src\shield.ts:51:29)
at Object.<anonymous> (C:\project\server\src\permissions\index.ts:16:28)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Module._compile (C:\project\server\node_modules\source-map-support\source-map-support.js:521:25)
at Module.m._compile (C:\Users\me\AppData\Local\Temp\ts-node-dev-hook-8773075548230125.js:56:25)
at Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at require.extensions.(anonymous function) (C:\Users\me\AppData\Local\Temp\ts-node-dev-hook-8773075548230125.js:58:14)
at Object.nodeDevHook [as .ts] (C:\project\server\node_modules\ts-node-dev\lib\hook.js:61:7) at
Module.load (внутренний / modules / cjs / loader.js: 653: 32)