From 9337b0a75c536fd2b670ff3bb875199f0a06f2a7 Mon Sep 17 00:00:00 2001 From: nau Date: Sat, 16 Jul 2016 22:00:29 +0200 Subject: [PATCH] tokens fully implemented, get all thoughts from user by user id implemented --- controllers/thoughtController.js | 20 +++++++++++++ controllers/userController.js | 1 + models/thoughtModel.js | 4 ++- server.js | 51 ++++++++++++++++++++++++++++---- 4 files changed, 69 insertions(+), 7 deletions(-) diff --git a/controllers/thoughtController.js b/controllers/thoughtController.js index 49a3a85..1fe9194 100644 --- a/controllers/thoughtController.js +++ b/controllers/thoughtController.js @@ -22,6 +22,26 @@ exports.findById = function(req, res) { }); }; +exports.findAllThoughtsFromUsername = function(req, res) { + thoughtModel.find({ + authorname: req.params.userid + }, function(err, thoughts) { + + if (err) throw err; + + if (!thoughts) { + res.json({ success: false, message: 'no thoughts for user' }); + } else if (thoughts) { + console.log(thoughts); + // return the information including token as JSON + res.jsonp(thoughts); + + + } + + }); +}; + //POST - Insert a new TVShow in the DB exports.addThought = function(req, res) { console.log('POST new thought, content: ' + req.body.content); diff --git a/controllers/userController.js b/controllers/userController.js index c48db23..474c6f2 100644 --- a/controllers/userController.js +++ b/controllers/userController.js @@ -30,6 +30,7 @@ exports.findById = function(req, res) { }); }; + //POST - Insert a new TVShow in the DB exports.addUser = function(req, res) { console.log('POST new user, name: ' + req.body.username); diff --git a/models/thoughtModel.js b/models/thoughtModel.js index 2206ae2..125e2f6 100644 --- a/models/thoughtModel.js +++ b/models/thoughtModel.js @@ -5,6 +5,8 @@ var mongoose = require('mongoose'), var thoughtSchema = new Schema({ time: { type: String }, content: { type: String }, - authorname: { type: String } + authorname: { type: String }, + user_id: { type: String }, + fav: { type: String } //array amb els users que posen fav }) module.exports = mongoose.model('thoughtModel', thoughtSchema); diff --git a/server.js b/server.js index 04895c2..84fc2c0 100755 --- a/server.js +++ b/server.js @@ -40,31 +40,70 @@ router.get('/', function(req, res) { app.use(router);*/ app.use(express.static(__dirname + '/web')); -// API routes +// API routes ------------------------------------------------------ var apiRoutes = express.Router(); apiRoutes.route('/users') .get(userCtrl.findAllUsers) .post(userCtrl.addUser); +apiRoutes.route('/thoughts/user/:userid') + .get(thoughtCtrl.findAllThoughtsFromUsername); + +apiRoutes.route('/auth') + .post(userCtrl.login); + +apiRoutes.route('/thoughts') + .get(thoughtCtrl.findAllThoughts); + +apiRoutes.route('/thoughts/:id') +.get(thoughtCtrl.findById) + +// route middleware to verify a token +apiRoutes.use(function(req, res, next) { + + // check header or url parameters or post parameters for token + var token = req.body.token || req.query.token || req.headers['x-access-token']; + + // decode token + if (token) { + + // verifies secret and checks exp + jwt.verify(token, app.get('superSecret'), function(err, decoded) { + if (err) { + return res.json({ success: false, message: 'Failed to authenticate token.' }); + } else { + // if everything is good, save to request for use in other routes + req.decoded = decoded; + next(); + } + }); + + } else { + + // if there is no token + // return an error + return res.status(403).send({ + success: false, + message: 'No token provided.' + }); + + } +}); apiRoutes.route('/users/:id') .get(userCtrl.findById) .put(userCtrl.updateActivity) .delete(userCtrl.deleteActivity); -apiRoutes.route('/auth') - .post(userCtrl.login); - apiRoutes.route('/thoughts') - .get(thoughtCtrl.findAllThoughts) .post(thoughtCtrl.addThought); apiRoutes.route('/thoughts/:id') - .get(thoughtCtrl.findById) .put(thoughtCtrl.updateActivity) .delete(thoughtCtrl.deleteActivity); app.use('/api', apiRoutes); +// end of API routes ------------------------------------- // Start server app.listen(3000, function() {