Files
2025-08-08 10:47:29 +02:00

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;