forked from bloominstituteoftechnology/back-end-project-week
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
100 lines (88 loc) · 2.48 KB
/
server.js
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// Frameworks
const express = require('express');
const bodyParser = require('body-parser');
const helmet = require('helmet');
const mongoose = require('mongoose');
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
const cors = require('cors');
// Components
const noteController = require('./notes/noteController');
const User = require('./users/userModel');
// Connect to the database
mongoose
.connect('mongodb://boaz:[email protected]:39970/my-bible-app')
.then(mongo => {
console.log('connected to database');
})
.catch(err => {
console.log('Error connecting to the database', err);
});
// Uses
const server = express();
server.use(helmet());
server.use(cors({}));
server.use(bodyParser.json());
server.use('/api/notes', noteController);
// User Authentication
function authenticate(req, res, next) {
if(req.session && req.session.username) {
next();
} else {
res.status(401).send('MENE MENE TEKEL UPHARSIN');
}
}
server.use(
session({
secret: 'The goodness of God leadeth thee to repentence.',
cookie: {
maxAge: 1 * 24 * 60 * 60 * 1000,
},
httpOnly: true,
secure: false,
resave: true,
saveUninitialized: false,
name: 'GodIsWatchingYou',
store: new MongoStore({
url: 'mongodb://boaz:[email protected]:39970/my-bible-app',
ttl: 60 * 10,
})
})
);
server.get('/api/users', authenticate, (req, res) => {
User.find().then(users => res.send(users));
});
server.post('/api/register', function(req, res) {
const user = new User(req.body);
user
.save()
.then(user => res.status(201).send(user))
.catch(err => res.status(500).send(err));
})
server.post('/api/login', (req, res) => {
const { username, password } = req.body;
User.findOne({ username })
.then(user => {
if (user) {
user.isPasswordValid(password).then(isValid => {
if (isValid) {
req.session.username = user.username;
res.send('Cookie has been created.');
} else {
res.status(401).send('That username/password combination does not exist.');
}
})
}
})
.catch(err => res.send(err));
});
// Basic get test
server.get('/', (req, res) => {
res.json({ Message: "Hello. You're not supposed to be here." });
});
// Open server to port
const port = process.env.PORT || 3333;
server.listen(port, err => {
if(err) console.log(err);
console.log(`API connected on ${port}`);
})