---|main| Initial commit

This commit is contained in:
Julien Gautier
2023-09-12 21:43:57 +02:00
commit 7e9599118e
42 changed files with 8015 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
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, 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;