58 lines
1.9 KiB
JavaScript
58 lines
1.9 KiB
JavaScript
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;
|