|
@@ -1,6 +1,18 @@
|
|
|
|
+/**
|
|
|
|
+ * Configure dotenv:
|
|
|
|
+ * https://www.npmjs.com/package/dotenv
|
|
|
|
+ *
|
|
|
|
+ * Configure file updates with multer:
|
|
|
|
+ * https://github.com/expressjs/multer
|
|
|
|
+ *
|
|
|
|
+ * Configure CORS for use with localhost.
|
|
|
|
+ */
|
|
|
|
+
|
|
require('dotenv').config()
|
|
require('dotenv').config()
|
|
const { GraphQLServer } = require('graphql-yoga')
|
|
const { GraphQLServer } = require('graphql-yoga')
|
|
const fileUpload = require('express-fileupload')
|
|
const fileUpload = require('express-fileupload')
|
|
|
|
+const jwt = require('jsonwebtoken')
|
|
|
|
+const cookieParser = require('cookie-parser')
|
|
const { resolvers } = require('./src/resolvers')
|
|
const { resolvers } = require('./src/resolvers')
|
|
const { db } = require('./src/db')
|
|
const { db } = require('./src/db')
|
|
|
|
|
|
@@ -14,6 +26,27 @@ const server = new GraphQLServer({
|
|
})
|
|
})
|
|
})
|
|
})
|
|
|
|
|
|
|
|
+server.express.use(cookieParser())
|
|
|
|
+
|
|
|
|
+server.express.use((req, res, next) => {
|
|
|
|
+ const { token } = req.cookies
|
|
|
|
+ if (token) {
|
|
|
|
+ const { userId } = jwt.verify(token, process.env.APP_SECRET)
|
|
|
|
+ req.userId = userId
|
|
|
|
+ }
|
|
|
|
+ next()
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+server.express.use(async (req, res, next) => {
|
|
|
|
+ if (!req.userId) return next()
|
|
|
|
+ const user = await db.query.user(
|
|
|
|
+ { where: { id: req.userId } },
|
|
|
|
+ '{id, email, name}'
|
|
|
|
+ )
|
|
|
|
+ req.user = user
|
|
|
|
+ next()
|
|
|
|
+})
|
|
|
|
+
|
|
server.express.use(fileUpload())
|
|
server.express.use(fileUpload())
|
|
server.express.post('/upload', (req, res) => {
|
|
server.express.post('/upload', (req, res) => {
|
|
console.log(req.files)
|
|
console.log(req.files)
|