-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
44 lines (38 loc) · 984 Bytes
/
server.js
File metadata and controls
44 lines (38 loc) · 984 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
require('dotenv').config({ path: 'variables.env' });
const express = require('express');
const { ApolloServer } = require('apollo-server-express');
const jwt = require('jsonwebtoken');
const { models } = require('./db');
const { typeDefs } = require('./graphql/typeDefs');
const { resolvers } = require('./graphql/resolvers');
const { PORT } = process.env;
const app = express();
const gqlServer = new ApolloServer({
typeDefs,
resolvers,
context: ({ req }) => {
const { currentUser } = req;
return { models, currentUser };
},
});
app.use((req, _, next) => {
const token = req.headers['authorization'];
let user = null;
if (token !== "null" && token) {
try {
user = jwt.verify(token, process.env.SECRET);
} catch(err) {
console.error(err)
}
}
req.currentUser = user;
next();
});
gqlServer.applyMiddleware({
app,
cors: true,
path: '/graphql',
});
app.listen(PORT, () => {
console.log(`server listening on ${PORT}`);
});