linagora-rse
Version:
80 lines (65 loc) • 3.2 kB
JavaScript
'use strict';
var followModule = require('../../core/user/follow');
var userModule = require('../../core/user');
var logger = require('../../core/logger');
function loadFollowing(req, res, next) {
userModule.get(req.params.tid, function(err, following) {
if (err) {
return res.status(500).json({error: {code: 500, message: 'Server error', details: 'Error while loading following'}});
}
if (!following) {
return res.status(400).json({error: {code: 400, message: 'Bad Request', details: 'Can not find following'}});
}
req.following = following;
next();
});
}
module.exports.loadFollowing = loadFollowing;
function canUnfollow(req, res, next) {
var following = req.following;
if (req.user._id.equals(following._id)) {
return res.status(400).json({error: {code: 400, message: 'Bad Request', details: 'You can not unfollow yourself'}});
}
followModule.follows(req.user, following).then(function(result) {
if (!result) {
return res.status(400).json({error: {code: 400, message: 'Bad Request', details: 'You can not unfollow this unfollowed user'}});
}
followModule.canUnfollow(req.user, following).then(function(result) {
if (!result) {
return res.status(400).json({error: {code: 400, message: 'Bad Request', details: 'You do not have permission to unfollow this user'}});
}
next();
}, function(err) {
logger.error('Error while checking if user can unfollow other user', err);
return res.status(500).json({error: {code: 500, message: 'Server Error', details: 'Error while checking if user can unfollow other user'}});
});
}, function(err) {
logger.error('Error while checking if user is already followed by user', err);
return res.status(500).json({error: {code: 500, message: 'Server Error', details: 'Can not check if user already follows other user'}});
});
}
module.exports.canUnfollow = canUnfollow;
function canFollow(req, res, next) {
var following = req.following;
if (req.user._id.equals(following._id)) {
return res.status(400).json({error: {code: 400, message: 'Bad Request', details: 'You can not follow yourself'}});
}
followModule.follows(req.user, following).then(function(result) {
if (result) {
return res.status(400).json({error: {code: 400, message: 'Bad Request', details: 'You already follow this user'}});
}
followModule.canFollow(req.user, following).then(function(result) {
if (!result) {
return res.status(400).json({error: {code: 400, message: 'Bad Request', details: 'You do not have permission to follow this user'}});
}
next();
}, function(err) {
logger.error('Error while checking if user is can follow other user', err);
return res.status(500).json({error: {code: 500, message: 'Server Error', details: 'Error while checking if user is can follow other user'}});
});
}, function(err) {
logger.error('Error while checking if user is already followed by user', err);
return res.status(500).json({error: {code: 500, message: 'Server Error', details: 'Can not check if user already follows other user'}});
});
}
module.exports.canFollow = canFollow;