openEventsPlatformServer/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
7var morgan = require('morgan');
8var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens
9var config = require('./config'); // get our config file
10
11mongoose.Promise = global.Promise;
12// Connection to DB
13mongoose.connect(config.database, function(err, res) {
14 if (err) throw err;
15 console.log('Connected to Database');
16});
17app.set('superSecret', config.secret); // secret variable
18
19// Middlewares
20/*app.use(bodyParser.urlencoded({
21 extended: false
22}));
23app.use(bodyParser.json());*/
24
25app.use(bodyParser.json({limit: '2mb'}));
26app.use(bodyParser.urlencoded({limit: '2mb', extended: true}));
27app.use(methodOverride());
28
29// use morgan to log requests to the console
30app.use(morgan('dev'));
31
32
33
34var userMdl = require('./models/userModel')(app, mongoose);
35var userCtrl = require('./controllers/userController');
36var eventMdl = require('./models/eventModel')(app, mongoose);
37var eventCtrl = require('./controllers/eventController');
38//var alertMdl = require('./models/alertModel')(app, mongoose);
39//var alertCtrl = require('./controllers/alertController');
40
41//CORS
42app.use(function(req, res, next) {
43 res.header("Access-Control-Allow-Origin", "*");
44 res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
45 res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, X-Access-Token");
46 next();
47});
48
49
50// API routes ------------------------------------------------------
51var apiRoutes = express.Router();
52
53apiRoutes.route('/login')
54 .post(userCtrl.login);
55apiRoutes.route('/signup')
56 .post(userCtrl.signup);
57
58apiRoutes.route('/users')
59 .get(userCtrl.getAllUsers);
60apiRoutes.route('/users/id/:userid')
61 .get(userCtrl.getUserById);
62
63apiRoutes.route('/events')
64 .get(eventCtrl.getAllEvents);
65apiRoutes.route('/alerts')
66 .get(eventCtrl.getAllAlerts);
67apiRoutes.route('/events/id/:eventid')
68 .get(eventCtrl.getEventById);
69apiRoutes.route('/events/following')
70 .post(eventCtrl.getEventsByFollowingArray);
71apiRoutes.route('/events/category/:category')
72 .get(eventCtrl.getEventsByCategory);
73apiRoutes.route('/events/day/:day')
74 .get(eventCtrl.getEventsByDay);
75
76apiRoutes.route('/categoriesList')
77 .get(eventCtrl.getCategoriesList);
78// route middleware to verify a token
79apiRoutes.use(function(req, res, next) {
80 // check header or url parameters or post parameters for token
81 var token = req.body.token || req.query.token || req.headers['x-access-token'];
82 // decode token
83 if (token) {
84 // verifies secret and checks exp
85 jwt.verify(token, app.get('superSecret'), function(err, decoded) {
86 if (err) {
87 return res.send(204, {
88 success: false,
89 message: 'Failed to authenticate token.'
90 });
91 } else {
92 // if everything is good, save to request for use in other routes
93 req.decoded = decoded;
94 //console.log("decoded " + decoded);
95 next();
96 }
97 });
98 } else {
99 // if there is no token
100 // return an error
101 return res.status(204).send({
102 success: false,
103 message: 'No token provided.'
104 });
105
106 }
107}); //fi verificació de token
108
109
110apiRoutes.route('/events')
111 .post(eventCtrl.addEvent);
112apiRoutes.route('/alerts')
113 .post(eventCtrl.addAlert);
114apiRoutes.route('/events/id/:eventid')
115 .delete(eventCtrl.deleteEvent);
116
117app.use('/api', apiRoutes);
118// end of API routes -------------------------------------
119
120// Start server
121app.listen(config.port, function() {
122 console.log("Node server running on http://localhost:3000");
123});