54 lines
1.5 KiB
JavaScript
54 lines
1.5 KiB
JavaScript
var router = require('express').Router();
|
|
var mongoose = require('mongoose');
|
|
var User = mongoose.model('User');
|
|
var auth = require('../auth');
|
|
|
|
// Preload user profile on routes with ':username'
|
|
router.param('username', function(req, res, next, username){
|
|
User.findOne({username: username}).then(function(user){
|
|
if (!user) { return res.sendStatus(404); }
|
|
|
|
req.profile = user;
|
|
|
|
return next();
|
|
}).catch(next);
|
|
});
|
|
|
|
router.get('/:username', auth.optional, function(req, res, next){
|
|
if(req.payload){
|
|
User.findById(req.payload.id).then(function(user){
|
|
if(!user){ return res.json({profile: req.profile.toProfileJSONFor(false)}); }
|
|
|
|
return res.json({profile: req.profile.toProfileJSONFor(user)});
|
|
});
|
|
} else {
|
|
return res.json({profile: req.profile.toProfileJSONFor(false)});
|
|
}
|
|
});
|
|
|
|
router.post('/:username/follow', auth.required, function(req, res, next){
|
|
var profileId = req.profile._id;
|
|
|
|
User.findById(req.payload.id).then(function(user){
|
|
if (!user) { return res.sendStatus(401); }
|
|
|
|
return user.follow(profileId).then(function(){
|
|
return res.json({profile: req.profile.toProfileJSONFor(user)});
|
|
});
|
|
}).catch(next);
|
|
});
|
|
|
|
router.delete('/:username/follow', auth.required, function(req, res, next){
|
|
var profileId = req.profile._id;
|
|
|
|
User.findById(req.payload.id).then(function(user){
|
|
if (!user) { return res.sendStatus(401); }
|
|
|
|
return user.unfollow(profileId).then(function(){
|
|
return res.json({profile: req.profile.toProfileJSONFor(user)});
|
|
});
|
|
}).catch(next);
|
|
});
|
|
|
|
module.exports = router;
|