arnaucube
arnaucube/commonroutesServerPublic Self-hosted repository
commonroutesServer/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
 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
 21app.use(bodyParser.urlencoded({
 22    extended: false
 23}));
 24app.use(bodyParser.json());
 25app.use(methodOverride());
 26
 27// use morgan to log requests to the console
 28app.use(morgan('dev'));
 29
 30// Import Models and controllers
 31var userMdl = require('./models/userModel')(app, mongoose);
 32var notificationMdl = require('./models/notificationModel')(app, mongoose);
 33var travelMdl = require('./models/travelModel')(app, mongoose);
 34var commentMdl = require('./models/commentModel')(app, mongoose);
 35var userCtrl = require('./controllers/userController');
 36var searchCtrl = require('./controllers/searchController');
 37var travelCtrl = require('./controllers/travelController');
 38
 39/*// Example Route
 40var router = express.Router();
 41router.get('/', function(req, res) {
 42  res.send("Hello world!");
 43});
 44app.use(router);*/
 45app.use(express.static(__dirname + '/www'));
 46
 47
 48//CORS
 49app.use(function(req, res, next) {
 50    res.header("Access-Control-Allow-Origin", "*");
 51    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
 52    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, X-Access-Token");
 53    next();
 54});
 55
 56// API routes ------------------------------------------------------
 57var apiRoutes = express.Router();
 58
 59apiRoutes.route('/login')
 60    .post(userCtrl.login);
 61apiRoutes.route('/signup')
 62    .post(userCtrl.signup);
 63apiRoutes.route('/users')
 64    .get(userCtrl.getAllUsers);
 65apiRoutes.route('/users/id/:userid')
 66    .get(userCtrl.getUserById);
 67apiRoutes.route('/travels')
 68    .get(travelCtrl.getAllTravels);
 69apiRoutes.route('/travels/id/:travelid')
 70    .get(travelCtrl.getTravelById);
 71
 72
 73// OJU AQUÏ TREC la verificació de token temporalment, per fer les proves des de l'app
 74// route middleware to verify a token
 75apiRoutes.use(function(req, res, next) {
 76
 77    // check header or url parameters or post parameters for token
 78    var token = req.body.token || req.query.token || req.headers['x-access-token'];
 79
 80    // decode token
 81    if (token) {
 82        // verifies secret and checks exp
 83        jwt.verify(token, app.get('superSecret'), function(err, decoded) {
 84            if (err) {
 85                return res.send(204,
 86                {
 87                    success: false,
 88                    message: 'Failed to authenticate token.'
 89                });
 90            } else {
 91                // if everything is good, save to request for use in other routes
 92                req.decoded = decoded;
 93                //console.log("decoded " + decoded);
 94                next();
 95            }
 96        });
 97
 98    } else {
 99
100        // if there is no token
101        // return an error
102        return res.status(204).send({
103            success: false,
104            message: 'No token provided.'
105        });
106
107    }
108}); //fi verificació de token
109
110
111apiRoutes.route('/search/:searchstring')
112    .get(searchCtrl.searchByString);
113apiRoutes.route('/notifications')
114    .get(userCtrl.getNotifications);
115apiRoutes.route('/users/token')
116    .get(userCtrl.getUserByToken);
117apiRoutes.route('/users')//agafa l'user a partir del token
118    .put(userCtrl.updateUser)//no comprovat
119    .delete(userCtrl.deleteUser);
120
121apiRoutes.route('/users/id/travels/:userid')
122    .get(userCtrl.getTravelsByUserId);
123apiRoutes.route('/travels')
124    .post(travelCtrl.addTravel);
125apiRoutes.route('/travels/id/modify/:travelid')
126    .put(travelCtrl.updateTravel)//no comprovat
127    .delete(travelCtrl.deleteTravel);
128apiRoutes.route('/travels/join/:travelid')
129    .post(travelCtrl.addJoinPetition);
130apiRoutes.route('/travels/unjoin/:travelid')
131    .post(travelCtrl.unJoin);
132apiRoutes.route('/travels/leave/:travelid')
133    .post(travelCtrl.leave);
134apiRoutes.route('/travels/byuser/id/:userid')
135    .get(travelCtrl.getTravelsByUserId);
136apiRoutes.route('/travels/declineJoin/:travelid')
137    .post(travelCtrl.declineJoin);
138apiRoutes.route('/travels/acceptJoin/:travelid')
139    .post(travelCtrl.acceptJoin);
140//FINS AQUÏ COMPROVAT
141
142apiRoutes.route('/travels/comment/:travelid')
143    .get(travelCtrl.getCommentsByTravelId);
144
145/*apiRoutes.route('/travels/join/:travelId')
146    .post(travelCtrl.addJoin);
147apiRoutes.route('/travels/unjoin/:travelId')
148    .post(travelCtrl.doUnjoin);*/
149
150/*apiRoutes.route('/travels/:travelId/join')
151    .post(travelCtrl.addJoin);
152apiRoutes.route('/travels/:travelId/unjoin')
153    .post(travelCtrl.doUnjoin);
154*/
155apiRoutes.route('/users/:userId/fav')
156    .post(userCtrl.addFav);
157apiRoutes.route('/users/:userId/unfav')
158    .post(userCtrl.doUnfav);
159
160apiRoutes.route('/travels/:travelId/comment')
161    .post(travelCtrl.addComment);
162
163app.use('/api', apiRoutes);
164// end of API routes -------------------------------------
165
166// Start server
167app.listen(config.port, function() {
168    console.log("Node server running on http://localhost:3000");
169});