mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-30 02:25:55 +01:00
all user account pages; all static pages; outgoing page
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
var topicsController = require('./topics'),
|
var topicsController = require('./topics'),
|
||||||
categoriesController = require('./categories'),
|
categoriesController = require('./categories'),
|
||||||
|
staticController = require('./static'),
|
||||||
async = require('async'),
|
async = require('async'),
|
||||||
nconf = require('nconf'),
|
nconf = require('nconf'),
|
||||||
auth = require('./../routes/authentication'),
|
auth = require('./../routes/authentication'),
|
||||||
@@ -12,13 +13,14 @@ var topicsController = require('./topics'),
|
|||||||
|
|
||||||
Controllers = {
|
Controllers = {
|
||||||
topics: topicsController,
|
topics: topicsController,
|
||||||
categories: categoriesController
|
categories: categoriesController,
|
||||||
|
static: staticController
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
Controllers.home = function(req, res, next) {
|
Controllers.home = function(req, res, next) {
|
||||||
async.parallel({
|
async.parallel({
|
||||||
"header": function (next) {
|
header: function (next) {
|
||||||
/*app.build_header({
|
/*app.build_header({
|
||||||
req: req,
|
req: req,
|
||||||
res: res,
|
res: res,
|
||||||
@@ -39,7 +41,7 @@ Controllers.home = function(req, res, next) {
|
|||||||
|
|
||||||
next(null);
|
next(null);
|
||||||
},
|
},
|
||||||
"categories": function (next) {
|
categories: function (next) {
|
||||||
var uid = (req.user) ? req.user.uid : 0;
|
var uid = (req.user) ? req.user.uid : 0;
|
||||||
categories.getAllCategories(uid, function (err, data) {
|
categories.getAllCategories(uid, function (err, data) {
|
||||||
data.categories = data.categories.filter(function (category) {
|
data.categories = data.categories.filter(function (category) {
|
||||||
@@ -186,4 +188,23 @@ Controllers.robots = function (req, res) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Controllers.outgoing = function(req, res, next) {
|
||||||
|
var url = req.query.url,
|
||||||
|
data = {
|
||||||
|
url: url,
|
||||||
|
title: meta.config.title
|
||||||
|
};
|
||||||
|
|
||||||
|
if (url) {
|
||||||
|
if (res.locals.isAPI) {
|
||||||
|
res.json(data);
|
||||||
|
} else {
|
||||||
|
res.render('outgoing', data);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
res.status(404);
|
||||||
|
res.redirect(nconf.get('relative_path') + '/404');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = Controllers;
|
module.exports = Controllers;
|
||||||
27
src/controllers/static.js
Normal file
27
src/controllers/static.js
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
var staticController = {};
|
||||||
|
|
||||||
|
staticController['404'] = function(req, res, next) {
|
||||||
|
if (res.locals.isAPI) {
|
||||||
|
res.json({});
|
||||||
|
} else {
|
||||||
|
res.render('404', {});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
staticController['403'] = function(req, res, next) {
|
||||||
|
if (res.locals.isAPI) {
|
||||||
|
res.json({});
|
||||||
|
} else {
|
||||||
|
res.render('403', {});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
staticController['500'] = function(req, res, next) {
|
||||||
|
if (res.locals.isAPI) {
|
||||||
|
res.json({});
|
||||||
|
} else {
|
||||||
|
res.render('500', {});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = staticController;
|
||||||
277
src/controllers/users.js
Normal file
277
src/controllers/users.js
Normal file
@@ -0,0 +1,277 @@
|
|||||||
|
var usersController = {},
|
||||||
|
user = require('./../user'),
|
||||||
|
posts = require('./../posts');
|
||||||
|
|
||||||
|
|
||||||
|
function userNotFound(res) {
|
||||||
|
if (res.locals.isAPI) {
|
||||||
|
return res.json(404, {
|
||||||
|
error: 'User not found!'
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return res.render('404', {
|
||||||
|
error: 'User not found!'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function userNotAllowed(res) {
|
||||||
|
if (res.locals.isAPI) {
|
||||||
|
return res.json(403, {
|
||||||
|
error: 'Not allowed.'
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return res.render('403', {
|
||||||
|
error: 'Not allowed.'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
usersController.getAccount = function(req, res, next) {
|
||||||
|
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
||||||
|
|
||||||
|
getUserDataByUserSlug(req.params.userslug, callerUID, function (err, userData) {
|
||||||
|
if(err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!userData) {
|
||||||
|
return res.json(404, {
|
||||||
|
error: 'User not found!'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
user.isFollowing(callerUID, userData.theirid, function (isFollowing) {
|
||||||
|
posts.getPostsByUid(callerUID, userData.theirid, 0, 9, function (err, userPosts) {
|
||||||
|
if(err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
userData.posts = userPosts.posts.filter(function (p) {
|
||||||
|
return p && parseInt(p.deleted, 10) !== 1;
|
||||||
|
});
|
||||||
|
|
||||||
|
userData.isFollowing = isFollowing;
|
||||||
|
|
||||||
|
if (!userData.profileviews) {
|
||||||
|
userData.profileviews = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (callerUID !== parseInt(userData.uid, 10) && callerUID) {
|
||||||
|
user.incrementUserFieldBy(userData.uid, 'profileviews', 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
postTools.parse(userData.signature, function (err, signature) {
|
||||||
|
userData.signature = signature;
|
||||||
|
|
||||||
|
if (res.locals.isAPI) {
|
||||||
|
res.json({});
|
||||||
|
} else {
|
||||||
|
res.render('account', {});
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
usersController.getFollowing = function(req, res, next) {
|
||||||
|
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
||||||
|
|
||||||
|
getUserDataByUserSlug(req.params.userslug, callerUID, function (err, userData) {
|
||||||
|
if(err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (userData) {
|
||||||
|
user.getFollowing(userData.uid, function (err, followingData) {
|
||||||
|
if(err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
userData.following = followingData;
|
||||||
|
userData.followingCount = followingData.length;
|
||||||
|
|
||||||
|
if (res.locals.isAPI) {
|
||||||
|
res.json(userData);
|
||||||
|
} else {
|
||||||
|
res.render('following', userData);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return userNotFound();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
usersController.getFollowers = function(req, res, next) {
|
||||||
|
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
||||||
|
|
||||||
|
getUserDataByUserSlug(req.params.userslug, callerUID, function (err, userData) {
|
||||||
|
if(err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (userData) {
|
||||||
|
user.getFollowers(userData.uid, function (err, followersData) {
|
||||||
|
if(err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
userData.followers = followersData;
|
||||||
|
userData.followersCount = followersData.length;
|
||||||
|
|
||||||
|
if (res.locals.isAPI) {
|
||||||
|
res.json(userData);
|
||||||
|
} else {
|
||||||
|
res.render('followers', userData);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return userNotFound();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
usersController.getFavourites = function(req, res, next) {
|
||||||
|
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
||||||
|
|
||||||
|
user.getUidByUserslug(req.params.userslug, function (err, uid) {
|
||||||
|
if (!uid) {
|
||||||
|
return userNotFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parseInt(uid, 10) !== callerUID) {
|
||||||
|
return userNotAllowed();
|
||||||
|
}
|
||||||
|
|
||||||
|
user.getUserFields(uid, ['username', 'userslug'], function (err, userData) {
|
||||||
|
if (err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!userData) {
|
||||||
|
return userNotFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
posts.getFavourites(uid, 0, 9, function (err, favourites) {
|
||||||
|
if (err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
userData.theirid = uid;
|
||||||
|
userData.yourid = callerUID;
|
||||||
|
userData.posts = favourites.posts;
|
||||||
|
userData.nextStart = favourites.nextStart;
|
||||||
|
|
||||||
|
if (res.locals.isAPI) {
|
||||||
|
res.json(userData);
|
||||||
|
} else {
|
||||||
|
res.render('favourites', userData);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
usersController.getPosts = function(req, res, next) {
|
||||||
|
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
||||||
|
|
||||||
|
user.getUidByUserslug(req.params.userslug, function (err, uid) {
|
||||||
|
if (!uid) {
|
||||||
|
return userNotFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
user.getUserFields(uid, ['username', 'userslug'], function (err, userData) {
|
||||||
|
if (err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!userData) {
|
||||||
|
return userNotFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
posts.getPostsByUid(callerUID, uid, 0, 19, function (err, userPosts) {
|
||||||
|
if (err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
userData.uid = uid;
|
||||||
|
userData.theirid = uid;
|
||||||
|
userData.yourid = callerUID;
|
||||||
|
userData.posts = userPosts.posts;
|
||||||
|
userData.nextStart = userPosts.nextStart;
|
||||||
|
|
||||||
|
if (res.locals.isAPI) {
|
||||||
|
res.json(userData);
|
||||||
|
} else {
|
||||||
|
res.render('accountposts', userData);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
usersController.accountEdit = function(req, res, next) {
|
||||||
|
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
||||||
|
|
||||||
|
getUserDataByUserSlug(req.params.userslug, callerUID, function (err, userData) {
|
||||||
|
if(err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (res.locals.isAPI) {
|
||||||
|
res.json(userData);
|
||||||
|
} else {
|
||||||
|
res.render('accountedit', userData);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
usersController.accountSettings = function(req, res, next) {
|
||||||
|
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
||||||
|
|
||||||
|
user.getUidByUserslug(req.params.userslug, function(err, uid) {
|
||||||
|
if (err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!uid) {
|
||||||
|
return userNotFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parseInt(uid, 10) !== callerUID) {
|
||||||
|
return userNotAllowed();
|
||||||
|
}
|
||||||
|
|
||||||
|
plugins.fireHook('filter:user.settings', [], function(err, settings) {
|
||||||
|
if (err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
user.getUserFields(uid, ['username', 'userslug'], function(err, userData) {
|
||||||
|
if (err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!userData) {
|
||||||
|
return userNotFound();
|
||||||
|
}
|
||||||
|
userData.yourid = req.user.uid;
|
||||||
|
userData.theirid = uid;
|
||||||
|
userData.settings = settings;
|
||||||
|
|
||||||
|
if (res.locals.isAPI) {
|
||||||
|
res.json(userData);
|
||||||
|
} else {
|
||||||
|
res.render('accountsettings', userData);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = usersController;
|
||||||
@@ -200,21 +200,7 @@ var path = require('path'),
|
|||||||
} else {
|
} else {
|
||||||
res.send(403);
|
res.send(403);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/outgoing', function (req, res) {
|
|
||||||
var url = req.query.url;
|
|
||||||
|
|
||||||
if (url) {
|
|
||||||
res.json({
|
|
||||||
url: url,
|
|
||||||
title: meta.config.title
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
res.status(404);
|
|
||||||
res.redirect(nconf.get('relative_path') + '/404');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/search', function (req, res) {
|
app.get('/search', function (req, res) {
|
||||||
if ((req.user && req.user.uid) || meta.config.allowGuestSearching === '1') {
|
if ((req.user && req.user.uid) || meta.config.allowGuestSearching === '1') {
|
||||||
@@ -360,18 +346,6 @@ var path = require('path'),
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/404', function (req, res) {
|
|
||||||
res.json({});
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/403', function (req, res) {
|
|
||||||
res.json({});
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/500', function(req, res) {
|
|
||||||
res.json({errorMessage: 'testing'});
|
|
||||||
});
|
|
||||||
|
|
||||||
app.namespace('/categories', function() {
|
app.namespace('/categories', function() {
|
||||||
app.get(':cid/moderators', function(req, res) {
|
app.get(':cid/moderators', function(req, res) {
|
||||||
categories.getModerators(req.params.cid, function(err, moderators) {
|
categories.getModerators(req.params.cid, function(err, moderators) {
|
||||||
|
|||||||
@@ -100,13 +100,7 @@ var fs = require('fs'),
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
createRoute('/:userslug', '', 'account');
|
|
||||||
createRoute('/:userslug/following', '/following', 'following');
|
|
||||||
createRoute('/:userslug/followers', '/followers', 'followers');
|
|
||||||
createRoute('/:userslug/favourites', '/favourites', 'favourites');
|
|
||||||
createRoute('/:userslug/posts', '/posts', 'accountposts');
|
|
||||||
createRoute('/:userslug/edit', '/edit', 'accountedit');
|
|
||||||
createRoute('/:userslug/settings', '/settings', 'accountsettings');
|
|
||||||
|
|
||||||
app.post('/uploadpicture', function (req, res) {
|
app.post('/uploadpicture', function (req, res) {
|
||||||
if (!req.user) {
|
if (!req.user) {
|
||||||
@@ -216,20 +210,17 @@ var fs = require('fs'),
|
|||||||
});
|
});
|
||||||
|
|
||||||
function isAllowed(req, res, next) {
|
function isAllowed(req, res, next) {
|
||||||
if(!req.user && !!parseInt(meta.config.privateUserInfo, 10)) {
|
|
||||||
return res.json(403, 'not-allowed');
|
|
||||||
}
|
|
||||||
next();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
app.get('/api/user/:userslug/following', isAllowed, getUserFollowing);
|
//app.get('/api/user/:userslug/following', isAllowed, getUserFollowing);
|
||||||
app.get('/api/user/:userslug/followers', isAllowed, getUserFollowers);
|
//app.get('/api/user/:userslug/followers', isAllowed, getUserFollowers);
|
||||||
app.get('/api/user/:userslug/edit', isAllowed, getUserEdit);
|
//app.get('/api/user/:userslug/edit', isAllowed, getUserEdit);
|
||||||
app.get('/api/user/:userslug/settings', isAllowed, getUserSettings);
|
//app.get('/api/user/:userslug/settings', isAllowed, getUserSettings);
|
||||||
app.get('/api/user/:userslug/favourites', isAllowed, getUserFavourites);
|
//app.get('/api/user/:userslug/favourites', isAllowed, getUserFavourites);
|
||||||
app.get('/api/user/:userslug/posts', isAllowed, getUserPosts);
|
//app.get('/api/user/:userslug/posts', isAllowed, getUserPosts);
|
||||||
app.get('/api/user/uid/:uid', isAllowed, getUserData);
|
app.get('/api/user/uid/:uid', isAllowed, getUserData);
|
||||||
app.get('/api/user/:userslug', isAllowed, getUserProfile);
|
//app.get('/api/user/:userslug', isAllowed, getUserProfile);
|
||||||
|
|
||||||
app.get('/api/users', isAllowed, getOnlineUsers);
|
app.get('/api/users', isAllowed, getOnlineUsers);
|
||||||
app.get('/api/users/sort-posts', isAllowed, getUsersSortedByPosts);
|
app.get('/api/users/sort-posts', isAllowed, getUsersSortedByPosts);
|
||||||
@@ -240,48 +231,7 @@ var fs = require('fs'),
|
|||||||
|
|
||||||
|
|
||||||
function getUserProfile(req, res, next) {
|
function getUserProfile(req, res, next) {
|
||||||
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
|
||||||
|
|
||||||
getUserDataByUserSlug(req.params.userslug, callerUID, function (err, userData) {
|
|
||||||
if(err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!userData) {
|
|
||||||
return res.json(404, {
|
|
||||||
error: 'User not found!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
user.isFollowing(callerUID, userData.theirid, function (isFollowing) {
|
|
||||||
|
|
||||||
posts.getPostsByUid(callerUID, userData.theirid, 0, 9, function (err, userPosts) {
|
|
||||||
|
|
||||||
if(err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
userData.posts = userPosts.posts.filter(function (p) {
|
|
||||||
return p && parseInt(p.deleted, 10) !== 1;
|
|
||||||
});
|
|
||||||
|
|
||||||
userData.isFollowing = isFollowing;
|
|
||||||
|
|
||||||
if (!userData.profileviews) {
|
|
||||||
userData.profileviews = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (callerUID !== parseInt(userData.uid, 10) && callerUID) {
|
|
||||||
user.incrementUserFieldBy(userData.uid, 'profileviews', 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
postTools.parse(userData.signature, function (err, signature) {
|
|
||||||
userData.signature = signature;
|
|
||||||
res.json(userData);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getUserData(req, res, next) {
|
function getUserData(req, res, next) {
|
||||||
@@ -293,190 +243,27 @@ var fs = require('fs'),
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getUserPosts(req, res, next) {
|
function getUserPosts(req, res, next) {
|
||||||
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
|
||||||
|
|
||||||
user.getUidByUserslug(req.params.userslug, function (err, uid) {
|
|
||||||
if (!uid) {
|
|
||||||
return res.json(404, {
|
|
||||||
error: 'User not found!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
user.getUserFields(uid, ['username', 'userslug'], function (err, userData) {
|
|
||||||
if (err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!userData) {
|
|
||||||
return res.json(404, {
|
|
||||||
error: 'User not found!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
posts.getPostsByUid(callerUID, uid, 0, 19, function (err, userPosts) {
|
|
||||||
if (err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
userData.uid = uid;
|
|
||||||
userData.theirid = uid;
|
|
||||||
userData.yourid = callerUID;
|
|
||||||
userData.posts = userPosts.posts;
|
|
||||||
userData.nextStart = userPosts.nextStart;
|
|
||||||
|
|
||||||
res.json(userData);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getUserFavourites(req, res, next) {
|
function getUserFavourites(req, res, next) {
|
||||||
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
|
||||||
|
|
||||||
user.getUidByUserslug(req.params.userslug, function (err, uid) {
|
|
||||||
if (!uid) {
|
|
||||||
return res.json(404, {
|
|
||||||
error: 'User not found!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parseInt(uid, 10) !== callerUID) {
|
|
||||||
return res.json(403, {
|
|
||||||
error: 'Not allowed!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
user.getUserFields(uid, ['username', 'userslug'], function (err, userData) {
|
|
||||||
if (err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!userData) {
|
|
||||||
return res.json(404, {
|
|
||||||
error: 'User not found!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
posts.getFavourites(uid, 0, 9, function (err, favourites) {
|
|
||||||
if (err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
userData.theirid = uid;
|
|
||||||
userData.yourid = callerUID;
|
|
||||||
userData.posts = favourites.posts;
|
|
||||||
userData.nextStart = favourites.nextStart;
|
|
||||||
|
|
||||||
res.json(userData);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getUserSettings(req, res, next) {
|
function getUserSettings(req, res, next) {
|
||||||
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
|
||||||
|
|
||||||
user.getUidByUserslug(req.params.userslug, function(err, uid) {
|
|
||||||
if (err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!uid) {
|
|
||||||
return res.json(404, {
|
|
||||||
error: 'User not found!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parseInt(uid, 10) !== callerUID) {
|
|
||||||
return res.json(403, {
|
|
||||||
error: 'Not allowed!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
plugins.fireHook('filter:user.settings', [], function(err, settings) {
|
|
||||||
if (err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
user.getUserFields(uid, ['username', 'userslug'], function(err, userData) {
|
|
||||||
if (err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!userData) {
|
|
||||||
return res.json(404, {
|
|
||||||
error: 'User not found!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
userData.yourid = req.user.uid;
|
|
||||||
userData.theirid = uid;
|
|
||||||
userData.settings = settings;
|
|
||||||
res.json(userData);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getUserEdit(req, res, next) {
|
//function getUserEdit(req, res, next) {
|
||||||
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
//
|
||||||
|
|
||||||
getUserDataByUserSlug(req.params.userslug, callerUID, function (err, userData) {
|
|
||||||
if(err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
res.json(userData);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getUserFollowers(req, res, next) {
|
function getUserFollowers(req, res, next) {
|
||||||
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
|
||||||
|
|
||||||
getUserDataByUserSlug(req.params.userslug, callerUID, function (err, userData) {
|
|
||||||
if(err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (userData) {
|
|
||||||
user.getFollowers(userData.uid, function (err, followersData) {
|
|
||||||
if(err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
userData.followers = followersData;
|
|
||||||
userData.followersCount = followersData.length;
|
|
||||||
res.json(userData);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
res.json(404, {
|
|
||||||
error: 'User not found!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getUserFollowing(req, res, next) {
|
function getUserFollowing(req, res, next) {
|
||||||
var callerUID = req.user ? parseInt(req.user.uid, 10) : 0;
|
|
||||||
|
|
||||||
getUserDataByUserSlug(req.params.userslug, callerUID, function (err, userData) {
|
|
||||||
if(err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (userData) {
|
|
||||||
user.getFollowing(userData.uid, function (err, followingData) {
|
|
||||||
if(err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
userData.following = followingData;
|
|
||||||
userData.followingCount = followingData.length;
|
|
||||||
res.json(userData);
|
|
||||||
});
|
|
||||||
|
|
||||||
} else {
|
|
||||||
res.json(404, {
|
|
||||||
error: 'User not found!'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getUsersSortedByJoinDate(req, res) {
|
function getUsersSortedByJoinDate(req, res) {
|
||||||
|
|||||||
@@ -109,6 +109,18 @@ process.on('uncaughtException', function(err) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
app.checkGlobalPrivacySettings = function(req, res, next) {
|
||||||
|
if(!req.user && !!parseInt(meta.config.privateUserInfo, 10)) {
|
||||||
|
if (res.locals.isAPI) {
|
||||||
|
return res.json(403, 'not-allowed');
|
||||||
|
} else {
|
||||||
|
return res.redirect('403');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
next();
|
||||||
|
};
|
||||||
|
|
||||||
app.buildHeader = function(req, res, next) {
|
app.buildHeader = function(req, res, next) {
|
||||||
async.parallel([
|
async.parallel([
|
||||||
function(next) {
|
function(next) {
|
||||||
@@ -589,7 +601,7 @@ process.on('uncaughtException', function(err) {
|
|||||||
|
|
||||||
// Basic Routes (entirely client-side parsed, goal is to move the rest of the crap in this file into this one section)
|
// Basic Routes (entirely client-side parsed, goal is to move the rest of the crap in this file into this one section)
|
||||||
(function () {
|
(function () {
|
||||||
var routes = ['register', 'account', '403', '404', '500'],
|
var routes = ['account'],
|
||||||
loginRequired = ['notifications'];
|
loginRequired = ['notifications'];
|
||||||
|
|
||||||
async.each(routes.concat(loginRequired), function(route, next) {
|
async.each(routes.concat(loginRequired), function(route, next) {
|
||||||
@@ -630,9 +642,21 @@ process.on('uncaughtException', function(err) {
|
|||||||
app.get('/api/confirm/:code', app.prepareAPI, controllers.confirmEmail);
|
app.get('/api/confirm/:code', app.prepareAPI, controllers.confirmEmail);
|
||||||
|
|
||||||
app.get('/sitemap.xml', controllers.sitemap);
|
app.get('/sitemap.xml', controllers.sitemap);
|
||||||
|
|
||||||
app.get('/robots.txt', controllers.robots);
|
app.get('/robots.txt', controllers.robots);
|
||||||
|
|
||||||
|
app.get('/outgoing', app.buildHeader, controllers.outgoing);
|
||||||
|
app.get('/api/outgoing', app.prepareAPI, controllers.outgoing);
|
||||||
|
|
||||||
|
app.get('/404', app.buildHeader, controllers.static['404']);
|
||||||
|
app.get('/api/404', app.prepareAPI, controllers.static['404']);
|
||||||
|
|
||||||
|
app.get('/403', app.buildHeader, controllers.static['403']);
|
||||||
|
app.get('/api/403', app.prepareAPI, controllers.static['403']);
|
||||||
|
|
||||||
|
app.get('/500', app.buildHeader, controllers.static['500']);
|
||||||
|
app.get('/api/500', app.prepareAPI, controllers.static['500']);
|
||||||
|
|
||||||
|
|
||||||
/* Topics */
|
/* Topics */
|
||||||
app.get('/topic/:topic_id/:slug?', app.buildHeader, controllers.topics.get);
|
app.get('/topic/:topic_id/:slug?', app.buildHeader, controllers.topics.get);
|
||||||
app.get('/api/topic/:topic_id/:slug?', app.prepareAPI, controllers.topics.get);
|
app.get('/api/topic/:topic_id/:slug?', app.prepareAPI, controllers.topics.get);
|
||||||
@@ -653,20 +677,31 @@ process.on('uncaughtException', function(err) {
|
|||||||
app.get('/category/:category_id/:slug?', app.buildHeader, controllers.categories.get);
|
app.get('/category/:category_id/:slug?', app.buildHeader, controllers.categories.get);
|
||||||
app.get('/api/category/:category_id/:slug?', app.prepareAPI, controllers.categories.get);
|
app.get('/api/category/:category_id/:slug?', app.prepareAPI, controllers.categories.get);
|
||||||
|
|
||||||
|
/* Users */
|
||||||
|
app.get'/user/:userslug', app.buildHeader, app.checkGlobalPrivacySettings, controllers.users.getAccount);
|
||||||
|
app.get'/api/user/:userslug', app.prepareAPI, app.checkGlobalPrivacySettings controllers.users.getAccount);
|
||||||
|
|
||||||
|
app.get'/user/:userslug/following', app.buildHeader, app.checkGlobalPrivacySettings, controllers.users.getFollowing);
|
||||||
|
app.get'/api/user/:userslug/following', app.prepareAPI, app.checkGlobalPrivacySettings controllers.users.getFollowing);
|
||||||
|
|
||||||
|
app.get'/user/:userslug/followers', app.buildHeader, app.checkGlobalPrivacySettings, controllers.users.getFollowers);
|
||||||
|
app.get'/api/user/:userslug/followers', app.prepareAPI, app.checkGlobalPrivacySettings controllers.users.getFollowers);
|
||||||
|
|
||||||
|
app.get'/user/:userslug/favourites', app.buildHeader, app.checkGlobalPrivacySettings, controllers.users.getFavourites);
|
||||||
|
app.get'/api/user/:userslug/favourites', app.prepareAPI, app.checkGlobalPrivacySettings controllers.users.getFavourites);
|
||||||
|
|
||||||
|
app.get'/user/:userslug/posts', app.buildHeader, app.checkGlobalPrivacySettings, controllers.users.getPosts);
|
||||||
|
app.get'/api/user/:userslug/posts', app.prepareAPI, app.checkGlobalPrivacySettings controllers.users.getPosts);
|
||||||
|
|
||||||
|
app.get'/user/:userslug/edit', app.buildHeader, app.checkGlobalPrivacySettings, controllers.users.accountEdit);
|
||||||
|
app.get'/api/user/:userslug/edit', app.prepareAPI, app.checkGlobalPrivacySettings controllers.users.accountEdit);
|
||||||
|
|
||||||
|
app.get'/user/:userslug/settings', app.buildHeader, app.checkGlobalPrivacySettings, controllers.users.accountSettings);
|
||||||
|
app.get'/api/user/:userslug/settings', app.prepareAPI, app.checkGlobalPrivacySettings controllers.users.accountSettings);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
app.get('/outgoing', function (req, res) {
|
|
||||||
if (!req.query.url) {
|
|
||||||
return res.redirect('/404');
|
|
||||||
}
|
|
||||||
|
|
||||||
app.build_header({
|
|
||||||
req: req,
|
|
||||||
res: res
|
|
||||||
}, function (err, header) {
|
|
||||||
res.send(header + app.create_route('outgoing?url=' + encodeURIComponent(req.query.url)) + templates.footer);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
app.get('/search/:term?', function (req, res) {
|
app.get('/search/:term?', function (req, res) {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user