Open ClauWeb69 opened 3 weeks ago
Describe the issue I'm using apollo server, typegraphql-prisma, when I want to apply an authorize on a specific field with applyModelsEnhanceMap the change is as if it did not exist, I start the queries and I can still see the password
Are you able to make a PR that fix this?
import { ApolloServer, } from '@apollo/server'; import { startServerAndCreateNextHandler } from '@as-integrations/next'; import { PrismaClient } from '@prisma/client'; import { resolvers, ModelsEnhanceMap, applyModelsEnhanceMap, Role } from "@/../prisma/generated/type-graphql"; import { AuthChecker, Authorized, buildSchema, createMethodMiddlewareDecorator, createParameterDecorator } from "type-graphql"; import { NextRequest } from 'next/server'; const prisma = new PrismaClient(); export const authChecker: AuthChecker<{ user: { role: string } }> = ({ context: { user } }, roles) => { return false; }; const modelsEnhanceMap: ModelsEnhanceMap = { User: { fields: { password: [Authorized("ADMIN")], }, }, }; applyModelsEnhanceMap(modelsEnhanceMap); const schema = await buildSchema({ resolvers, validate: false, authChecker, }); const server = new ApolloServer({ schema }); const nextHandlerPromise = startServerAndCreateNextHandler(server, { context: async () => ({ user: { id: "cm0wf7tkb0000yi5cjb7lrwrv", role: Role.USER }, prisma }), }) const handler = async (req: NextRequest) => { const nextHandler = await nextHandlerPromise; return nextHandler(req); }; export { handler as GET, handler as POST };
Additional context I tried to do the same with applyResolversEnhanceMap on the entire model and it works perfectly
Describe the issue I'm using apollo server, typegraphql-prisma, when I want to apply an authorize on a specific field with applyModelsEnhanceMap the change is as if it did not exist, I start the queries and I can still see the password
Are you able to make a PR that fix this?
Additional context I tried to do the same with applyResolversEnhanceMap on the entire model and it works perfectly