thoughts/server.js
server.jsRaw
1var express = require("express"),
2 app = express(),
3 bodyParser = require("body-parser"),
4 methodOverride = require("method-override"),
5 mongoose = require('mongoose');
6
7
8var morgan = require('morgan');
9var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens
10var config = require('./config'); // get our config file
11
12
13// Connection to DB
14mongoose.connect(config.database, function(err, res) {
15 if(err) throw err;
16 console.log('Connected to Database');
17});
18app.set('superSecret', config.secret); // secret variable
19
20// Middlewares
21app.use(bodyParser.urlencoded({ extended: false }));
22app.use(bodyParser.json());
23app.use(methodOverride());
24
25// use morgan to log requests to the console
26app.use(morgan('dev'));
27
28// Import Models and controllers
29var userMdl = require('./models/userModel')(app, mongoose);
30var userCtrl = require('./controllers/userController');
31
32var thoughtMdl = require('./models/thoughtModel')(app, mongoose);
33var thoughtCtrl = require('./controllers/thoughtController');
34
35/*// Example Route
36var router = express.Router();
37router.get('/', function(req, res) {
38 res.send("Hello world!");
39});
40app.use(router);*/
41app.use(express.static(__dirname + '/web'));
42
43// API routes ------------------------------------------------------
44var apiRoutes = express.Router();
45
46apiRoutes.route('/users')
47 .get(userCtrl.findAllUsers)
48 .post(userCtrl.addUser);
49apiRoutes.route('/thoughts/user/:userid')
50 .get(thoughtCtrl.findAllThoughtsFromUsername);
51
52apiRoutes.route('/auth')
53 .post(userCtrl.login);
54
55apiRoutes.route('/thoughts')
56 .get(thoughtCtrl.findAllThoughts);
57
58apiRoutes.route('/thoughts/:id')
59.get(thoughtCtrl.findById)
60
61// route middleware to verify a token
62apiRoutes.use(function(req, res, next) {
63
64 // check header or url parameters or post parameters for token
65 var token = req.body.token || req.query.token || req.headers['x-access-token'];
66
67 // decode token
68 if (token) {
69
70 // verifies secret and checks exp
71 jwt.verify(token, app.get('superSecret'), function(err, decoded) {
72 if (err) {
73 return res.json({ success: false, message: 'Failed to authenticate token.' });
74 } else {
75 // if everything is good, save to request for use in other routes
76 req.decoded = decoded;
77 next();
78 }
79 });
80
81 } else {
82
83 // if there is no token
84 // return an error
85 return res.status(403).send({
86 success: false,
87 message: 'No token provided.'
88 });
89
90 }
91});
92
93apiRoutes.route('/users/:id')
94 .get(userCtrl.findById)
95 .put(userCtrl.updateActivity)
96 .delete(userCtrl.deleteActivity);
97
98apiRoutes.route('/thoughts')
99 .post(thoughtCtrl.addThought);
100
101apiRoutes.route('/thoughts/:id')
102 .put(thoughtCtrl.updateActivity)
103 .delete(thoughtCtrl.deleteActivity);
104
105app.use('/api', apiRoutes);
106// end of API routes -------------------------------------
107
108// Start server
109app.listen(3000, function() {
110 console.log("Node server running on http://localhost:3000");
111});