login mutation으로 return한 token으로 getUser
즉, getuser 함수로 user를 return 해 준다.
await jwt.verify(token, process.env.SECRET_KEY) 를 통해 user의 id를 확인.
await prisma.user.findUnique({where:id}) 를 통해 user 정보를 확인.
if(user){ return user } user가 존재하면 user를 return해줌.
require('dotenv').config()
import { ApolloServer } from 'apollo-server-express'
import { graphqlUploadExpress } from 'graphql-upload'
import schema from './schema'
import { getUser } from './users/users.util'
import express from 'express'
const PORT = process.env.PORT
const startServer = async () => {
const server = new ApolloServer({
schema,
context: async ({ req }) => {
return {
loggedInUser: await getUser(req.headers.token),
}
},
})
await server.start()
const app = express()
app.use(graphqlUploadExpress())
app.use('/static', express.static('uploads'))
server.applyMiddleware({ app })
await new Promise((func) => app.listen({ port: PORT }, func))
}
console.log(`🚀 Server ready at http://loaclhost:${PORT}`)
startServer()
const server = new ApolloServer({
context: async({req}) => {
return { loggedInUser: await gerUser(req.headers.token)
in user.util.js에 protectedResolver callBack함수 만듬.
ourResolver=> resolvers함수를 받아서 root, args, context, info 를
넣어서 return
!!check
if(!context.loggedInUser) 가 없으면 return{ok :fasle, error}
context.loggedInUser가 존재하면 return ourResolver에 root, args, context, info를
넣어서 return 함.
resolverFn으로 editProfile function만듬
resolverFn을
protectedResolver안에 넣고, 이름은 editProfile로 해서 export 해줌.
즉, editProfile function은 loggedInUser가 있어야만 실행 가능해짐.