MEANseed/server/server.js
server/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
12mongoose.Promise = global.Promise;
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
21/*app.use(bodyParser.urlencoded({
22 extended: false
23}));
24app.use(bodyParser.json());*/
25
26app.use(bodyParser.json({limit: '50mb'}));
27app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
28app.use(methodOverride());
29
30// use morgan to log requests to the console
31app.use(morgan('dev'));
32
33// Import Models and controllers
34var userMdl = require('./models/userModel')(app, mongoose);
35var userCtrl = require('./controllers/userController');
36
37app.use(express.static(__dirname + '/../webapp'));
38
39
40//CORS
41app.use(function(req, res, next) {
42 res.header("Access-Control-Allow-Origin", "*");
43 res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
44 res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, X-Access-Token");
45 next();
46});
47
48// API routes ------------------------------------------------------
49var apiRoutes = express.Router();
50
51apiRoutes.route('/login')
52 .post(userCtrl.login);
53apiRoutes.route('/signup')
54 .post(userCtrl.signup);
55apiRoutes.route('/users')
56 .get(userCtrl.getAllUsers);
57apiRoutes.route('/users/id/:userid')
58 .get(userCtrl.getUserById);
59
60// OJU AQUÏ TREC la verificació de token temporalment, per fer les proves des de l'app
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 // verifies secret and checks exp
70 jwt.verify(token, app.get('superSecret'), function(err, decoded) {
71 if (err) {
72 return res.send(204,
73 {
74 success: false,
75 message: 'Failed to authenticate token.'
76 });
77 } else {
78 // if everything is good, save to request for use in other routes
79 req.decoded = decoded;
80 //console.log("decoded " + decoded);
81 next();
82 }
83 });
84
85 } else {
86
87 // if there is no token
88 // return an error
89 return res.status(204).send({
90 success: false,
91 message: 'No token provided.'
92 });
93
94 }
95}); //fi verificació de token
96
97apiRoutes.route('/users/token')
98 .get(userCtrl.getUserByToken);
99apiRoutes.route('/users')//agafa l'user a partir del token
100 .put(userCtrl.updateUser)//no comprovat
101 .delete(userCtrl.deleteUser);
102
103
104app.use('/api', apiRoutes);
105// end of API routes -------------------------------------
106
107// Start server
108app.listen(config.port, function() {
109 console.log("Node server running on port" + config.port);
110});