var router = require('express').Router(), mongoose = require('mongoose'), User = mongoose.model('User'); const 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) { 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) { let profileId = req.profile._id; User.findById(req.payload.id).then(function (user) { if (!user) { return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); } 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) { let profileId = req.profile._id; User.findById(req.payload.id).then(function (user) { if (!user) { return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } }); } return user.unfollow(profileId).then(function () { return res.json({ profile: req.profile.toProfileJSONFor(user) }); }); }).catch(next); }); module.exports = router;