arnaucube
arnaucube/thoughtsPublic Self-hosted repository
tokens fully implemented, get all thoughts from user by user id implemented
nau idoctnef@openmailbox.org
Sat, 16 Jul 2016 22:00:29 +0200
commit

9337b0a75c536fd2b670ff3bb875199f0a06f2a7

parent

64882fc513b23683fcd3154ef4c49edffce7f2a6

4 files changed, 69 insertions(+), 7 deletions(-)

jump to
M controllers/thoughtController.js → controllers/thoughtController.js

@@ -22,6 +22,26 @@ res.status(200).jsonp(thought);

}); }; +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);
M controllers/userController.js → controllers/userController.js

@@ -30,6 +30,7 @@ res.status(200).jsonp(user);

}); }; + //POST - Insert a new TVShow in the DB exports.addUser = function(req, res) { console.log('POST new user, name: ' + req.body.username);
M models/thoughtModel.js → models/thoughtModel.js

@@ -5,6 +5,8 @@

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);
M server.js → server.js

@@ -40,31 +40,70 @@ });

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() {