diff --git a/src/controllers/accounts.js b/src/controllers/accounts.js index 5a7679d93d..2a067993b6 100644 --- a/src/controllers/accounts.js +++ b/src/controllers/accounts.js @@ -27,6 +27,85 @@ function userNotAllowed(res) { } } +function getUserDataByUserSlug(userslug, callerUID, callback) { + user.getUidByUserslug(userslug, function(err, uid) { + if(err || !uid) { + return callback(err || new Error('invalid-user')); + } + + async.parallel({ + userData : function(next) { + user.getUserData(uid, next); + }, + userSettings : function(next) { + user.getSettings(uid, next); + }, + isAdmin : function(next) { + user.isAdministrator(callerUID, next); + }, + followStats: function(next) { + user.getFollowStats(uid, next); + }, + ips: function(next) { + user.getIPs(uid, 4, next); + } + }, function(err, results) { + if(err || !results.userData) { + return callback(err || new Error('invalid-user')); + } + + var userData = results.userData; + var userSettings = results.userSettings; + var isAdmin = results.isAdmin; + var self = parseInt(callerUID, 10) === parseInt(userData.uid, 10); + + userData.joindate = utils.toISOString(userData.joindate); + if(userData.lastonline) { + userData.lastonline = utils.toISOString(userData.lastonline); + } else { + userData.lastonline = userData.joindate; + } + + if (!userData.birthday) { + userData.age = ''; + } else { + userData.age = Math.floor((new Date().getTime() - new Date(userData.birthday).getTime()) / 31536000000); + } + + function canSeeEmail() { + return ; + } + + if (!(isAdmin || self || (userData.email && userSettings.showemail))) { + userData.email = ""; + } + + if (self && !userSettings.showemail) { + userData.emailClass = ""; + } else { + userData.emailClass = "hide"; + } + + if (isAdmin || self) { + userData.ips = results.ips; + } + + userData.websiteName = userData.website.replace('http://', '').replace('https://', ''); + userData.banned = parseInt(userData.banned, 10) === 1; + userData.uid = userData.uid; + userData.yourid = callerUID; + userData.theirid = userData.uid; + + userData.disableSignatures = meta.config.disableSignatures !== undefined && parseInt(meta.config.disableSignatures, 10) === 1; + + userData.followingCount = results.followStats.followingCount; + userData.followerCount = results.followStats.followerCount; + + callback(null, userData); + }); + }); +} + accountsController.getAccount = function(req, res, next) { var callerUID = req.user ? parseInt(req.user.uid, 10) : 0; diff --git a/src/routes/user.js b/src/routes/user.js index 5c7edd12a6..1c9c0e2894 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -286,85 +286,7 @@ var fs = require('fs'), } - function getUserDataByUserSlug(userslug, callerUID, callback) { - - user.getUidByUserslug(userslug, function(err, uid) { - if(err || !uid) { - return callback(err || new Error('invalid-user')); - } - - async.parallel({ - userData : function(next) { - user.getUserData(uid, next); - }, - userSettings : function(next) { - user.getSettings(uid, next); - }, - isAdmin : function(next) { - user.isAdministrator(callerUID, next); - }, - followStats: function(next) { - user.getFollowStats(uid, next); - }, - ips: function(next) { - user.getIPs(uid, 4, next); - } - }, function(err, results) { - if(err || !results.userData) { - return callback(err || new Error('invalid-user')); - } - - var userData = results.userData; - var userSettings = results.userSettings; - var isAdmin = results.isAdmin; - var self = parseInt(callerUID, 10) === parseInt(userData.uid, 10); - - userData.joindate = utils.toISOString(userData.joindate); - if(userData.lastonline) { - userData.lastonline = utils.toISOString(userData.lastonline); - } else { - userData.lastonline = userData.joindate; - } - - if (!userData.birthday) { - userData.age = ''; - } else { - userData.age = Math.floor((new Date().getTime() - new Date(userData.birthday).getTime()) / 31536000000); - } - - function canSeeEmail() { - return ; - } - - if (!(isAdmin || self || (userData.email && userSettings.showemail))) { - userData.email = ""; - } - - if (self && !userSettings.showemail) { - userData.emailClass = ""; - } else { - userData.emailClass = "hide"; - } - - if (isAdmin || self) { - userData.ips = results.ips; - } - - userData.websiteName = userData.website.replace('http://', '').replace('https://', ''); - userData.banned = parseInt(userData.banned, 10) === 1; - userData.uid = userData.uid; - userData.yourid = callerUID; - userData.theirid = userData.uid; - - userData.disableSignatures = meta.config.disableSignatures !== undefined && parseInt(meta.config.disableSignatures, 10) === 1; - - userData.followingCount = results.followStats.followingCount; - userData.followerCount = results.followStats.followerCount; - - callback(null, userData); - }); - }); - } + }; }(exports));