mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 11:05:54 +01:00 
			
		
		
		
	all user account pages; all static pages; outgoing page
This commit is contained in:
		| @@ -1,5 +1,6 @@ | ||||
| var topicsController = require('./topics'), | ||||
| 	categoriesController = require('./categories'), | ||||
| 	staticController = require('./static'), | ||||
| 	async = require('async'), | ||||
| 	nconf = require('nconf'), | ||||
| 	auth = require('./../routes/authentication'), | ||||
| @@ -12,13 +13,14 @@ var topicsController = require('./topics'), | ||||
|  | ||||
| Controllers = { | ||||
| 	topics: topicsController, | ||||
| 	categories: categoriesController | ||||
| 	categories: categoriesController, | ||||
| 	static: staticController | ||||
| }; | ||||
|  | ||||
|  | ||||
| Controllers.home = function(req, res, next) { | ||||
| 	async.parallel({ | ||||
| 		"header": function (next) { | ||||
| 		header: function (next) { | ||||
| 			/*app.build_header({ | ||||
| 				req: req, | ||||
| 				res: res, | ||||
| @@ -39,7 +41,7 @@ Controllers.home = function(req, res, next) { | ||||
|  | ||||
| 			next(null); | ||||
| 		}, | ||||
| 		"categories": function (next) { | ||||
| 		categories: function (next) { | ||||
| 			var uid = (req.user) ? req.user.uid : 0; | ||||
| 			categories.getAllCategories(uid, function (err, data) { | ||||
| 				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; | ||||
							
								
								
									
										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 { | ||||
| 					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) { | ||||
| 				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.get(':cid/moderators', function(req, res) { | ||||
| 					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) { | ||||
| 				if (!req.user) { | ||||
| @@ -216,20 +210,17 @@ var fs = require('fs'), | ||||
| 		}); | ||||
|  | ||||
| 		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/followers', isAllowed, getUserFollowers); | ||||
| 		app.get('/api/user/:userslug/edit', isAllowed, getUserEdit); | ||||
| 		app.get('/api/user/:userslug/settings', isAllowed, getUserSettings); | ||||
| 		app.get('/api/user/:userslug/favourites', isAllowed, getUserFavourites); | ||||
| 		app.get('/api/user/:userslug/posts', isAllowed, getUserPosts); | ||||
| 		//app.get('/api/user/:userslug/following', isAllowed, getUserFollowing); | ||||
| 		//app.get('/api/user/:userslug/followers', isAllowed, getUserFollowers); | ||||
| 		//app.get('/api/user/:userslug/edit', isAllowed, getUserEdit); | ||||
| 		//app.get('/api/user/:userslug/settings', isAllowed, getUserSettings); | ||||
| 		//app.get('/api/user/:userslug/favourites', isAllowed, getUserFavourites); | ||||
| 		//app.get('/api/user/:userslug/posts', isAllowed, getUserPosts); | ||||
| 		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/sort-posts', isAllowed, getUsersSortedByPosts); | ||||
| @@ -240,48 +231,7 @@ var fs = require('fs'), | ||||
|  | ||||
|  | ||||
| 		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) { | ||||
| @@ -293,190 +243,27 @@ var fs = require('fs'), | ||||
| 		} | ||||
|  | ||||
| 		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) { | ||||
| 			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) { | ||||
| 			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) { | ||||
| 			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 getUserEdit(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) { | ||||
| 			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) { | ||||
|   | ||||
| @@ -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) { | ||||
| 		async.parallel([ | ||||
| 			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) | ||||
| 		(function () { | ||||
| 			var routes = ['register', 'account', '403', '404', '500'], | ||||
| 			var routes = ['account'], | ||||
| 				loginRequired = ['notifications']; | ||||
|  | ||||
| 			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('/sitemap.xml', controllers.sitemap); | ||||
|  | ||||
| 		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 */ | ||||
| 		app.get('/topic/:topic_id/:slug?', app.buildHeader, 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('/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) { | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user