From 2d145b026cfdf54a63bef0b9d6324b6785390307 Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Fri, 14 Sep 2018 12:18:12 -0400 Subject: move finished folder --- finished-application/backend/src/index.js | 46 +++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 finished-application/backend/src/index.js (limited to 'finished-application/backend/src/index.js') diff --git a/finished-application/backend/src/index.js b/finished-application/backend/src/index.js new file mode 100644 index 0000000..804d6d6 --- /dev/null +++ b/finished-application/backend/src/index.js @@ -0,0 +1,46 @@ +const cookieParser = require('cookie-parser'); +const jwt = require('jsonwebtoken'); + +require('dotenv').config({ path: 'variables.env' }); +const createServer = require('./createServer'); +const db = require('./db'); + +const server = createServer(); + +server.express.use(cookieParser()); + +// decode the JWT so we can get the user Id on each request +server.express.use((req, res, next) => { + const { token } = req.cookies; + if (token) { + const { userId } = jwt.verify(token, process.env.APP_SECRET); + // put the userId onto the req for future requests to access + req.userId = userId; + } + next(); +}); + +// 2. Create a middleware that populates the user on each request + +server.express.use(async (req, res, next) => { + // if they aren't logged in, skip this + if (!req.userId) return next(); + const user = await db.query.user( + { where: { id: req.userId } }, + '{ id, permissions, email, name }' + ); + req.user = user; + next(); +}); + +server.start( + { + cors: { + credentials: true, + origin: process.env.FRONTEND_URL, + }, + }, + deets => { + console.log(`Server is now running on port http://localhost:${deets.port}`); + } +); -- cgit v1.3