diff --git a/src/controllers/accounts/blocks.js b/src/controllers/accounts/blocks.js index a3f6cba3ff..185d922970 100644 --- a/src/controllers/accounts/blocks.js +++ b/src/controllers/accounts/blocks.js @@ -12,9 +12,9 @@ blocksController.getBlocks = async function (req, res) { const resultsPerPage = 50; const start = Math.max(0, page - 1) * resultsPerPage; const stop = start + resultsPerPage - 1; + const payload = res.locals.userData; + const { uid, username, userslug, blocksCount } = payload; - const { uid, username, userslug, blocksCount } = await user.getUserFields(res.locals.uid, ['uid', 'username', 'userslug', 'blocksCount']); - const payload = {}; const uids = await user.blocks.list(uid); const data = await plugins.hooks.fire('filter:user.getBlocks', { uids: uids, diff --git a/src/controllers/accounts/categories.js b/src/controllers/accounts/categories.js index 4dfaf95f31..04222c1468 100644 --- a/src/controllers/accounts/categories.js +++ b/src/controllers/accounts/categories.js @@ -9,7 +9,8 @@ const meta = require('../../meta'); const categoriesController = module.exports; categoriesController.get = async function (req, res) { - const { username, userslug } = await user.getUserFields(res.locals.uid, ['username', 'userslug']); + const payload = res.locals.userData; + const { username, userslug } = payload; const [states, allCategoriesData] = await Promise.all([ user.getCategoryWatchState(res.locals.uid), categories.buildForSelect(res.locals.uid, 'find', ['descriptionParsed', 'depth', 'slug']), @@ -31,7 +32,6 @@ categoriesController.get = async function (req, res) { } }); - const payload = {}; payload.categories = categoriesData; payload.title = `[[pages:account/watched-categories, ${username}]]`; payload.breadcrumbs = helpers.buildBreadcrumbs([ diff --git a/src/controllers/accounts/consent.js b/src/controllers/accounts/consent.js index c4ec132a11..ecd8915bd7 100644 --- a/src/controllers/accounts/consent.js +++ b/src/controllers/accounts/consent.js @@ -2,7 +2,6 @@ const db = require('../../database'); const meta = require('../../meta'); -const user = require('../../user'); const helpers = require('../helpers'); const consentController = module.exports; @@ -11,11 +10,10 @@ consentController.get = async function (req, res, next) { if (!meta.config.gdpr_enabled) { return next(); } - - const { username, userslug } = await user.getUserFields(res.locals.uid, ['username', 'userslug']); + const payload = res.locals.userData; + const { username, userslug } = payload; const consented = await db.getObjectField(`user:${res.locals.uid}`, 'gdpr_consent'); - const payload = {}; payload.gdpr_consent = parseInt(consented, 10) === 1; payload.digest = { frequency: meta.config.dailyDigestFreq || 'off', diff --git a/src/controllers/accounts/follow.js b/src/controllers/accounts/follow.js index 44ad00d3de..58dba7f3c0 100644 --- a/src/controllers/accounts/follow.js +++ b/src/controllers/accounts/follow.js @@ -15,18 +15,16 @@ followController.getFollowers = async function (req, res, next) { }; async function getFollow(tpl, name, req, res) { + const { userData: payload } = res.locals; const { username, userslug, followerCount, followingCount, - } = await user.getUserFields(res.locals.uid, [ - 'username', 'userslug', 'followerCount', 'followingCount', - ]); + } = payload; const page = parseInt(req.query.page, 10) || 1; const resultsPerPage = 50; const start = Math.max(0, page - 1) * resultsPerPage; const stop = start + resultsPerPage - 1; - const payload = {}; payload.title = `[[pages:${tpl}, ${username}]]`; const method = name === 'following' ? 'getFollowing' : 'getFollowers'; diff --git a/src/controllers/accounts/groups.js b/src/controllers/accounts/groups.js index 27c0797afe..3a9d66243e 100644 --- a/src/controllers/accounts/groups.js +++ b/src/controllers/accounts/groups.js @@ -9,7 +9,7 @@ const groupsController = module.exports; groupsController.get = async function (req, res) { const { username, userslug } = await user.getUserFields(res.locals.uid, ['username', 'userslug']); - const payload = {}; + const payload = res.locals.userData; let groupsData = await groups.getUserGroups([res.locals.uid]); groupsData = groupsData[0]; diff --git a/src/controllers/accounts/info.js b/src/controllers/accounts/info.js index b62de6b486..7081acc7df 100644 --- a/src/controllers/accounts/info.js +++ b/src/controllers/accounts/info.js @@ -13,19 +13,17 @@ infoController.get = async function (req, res) { const start = (page - 1) * itemsPerPage; const stop = start + itemsPerPage - 1; - const [{ username, userslug }, isPrivileged] = await Promise.all([ - user.getUserFields(res.locals.uid, ['username', 'userslug']), + const payload = res.locals.userData; + const { username, userslug } = payload; + const [isPrivileged, history, sessions, usernames, emails] = await Promise.all([ user.isPrivileged(req.uid), - ]); - const [history, sessions, usernames, emails, notes] = await Promise.all([ user.getModerationHistory(res.locals.uid), user.auth.getSessions(res.locals.uid, req.sessionID), user.getHistory(`user:${res.locals.uid}:usernames`), user.getHistory(`user:${res.locals.uid}:emails`), - getNotes({ uid: res.locals.uid, isPrivileged }, start, stop), ]); - const payload = {}; + const notes = await getNotes({ uid: res.locals.uid, isPrivileged }, start, stop); payload.history = history; payload.sessions = sessions; diff --git a/src/controllers/accounts/posts.js b/src/controllers/accounts/posts.js index d1881454cb..53ca842cb8 100644 --- a/src/controllers/accounts/posts.js +++ b/src/controllers/accounts/posts.js @@ -177,10 +177,9 @@ async function getPostsFromUserSet(template, req, res) { const data = templateToData[template]; const page = Math.max(1, parseInt(req.query.page, 10) || 1); - const [{ username, userslug }, settings] = await Promise.all([ - user.getUserFields(res.locals.uid, ['username', 'userslug']), - user.getSettings(req.uid), - ]); + const payload = res.locals.userData; + const { username, userslug } = payload; + const settings = await user.getSettings(req.uid); const itemsPerPage = data.type === 'topics' ? settings.topicsPerPage : settings.postsPerPage; const start = (page - 1) * itemsPerPage; @@ -207,7 +206,6 @@ async function getPostsFromUserSet(template, req, res) { } const { itemCount, itemData } = result; - const payload = {}; payload[data.type] = itemData[data.type]; payload.nextStart = itemData.nextStart; diff --git a/src/controllers/accounts/sessions.js b/src/controllers/accounts/sessions.js index 74896346d7..520f466f5b 100644 --- a/src/controllers/accounts/sessions.js +++ b/src/controllers/accounts/sessions.js @@ -6,13 +6,15 @@ const helpers = require('../helpers'); const sessionController = module.exports; sessionController.get = async function (req, res) { - const { username, userslug } = await user.getUserFields(res.locals.uid, ['username', 'userslug']); + const payload = res.locals.userData; + const { username, userslug } = payload; - const payload = { - sessions: await user.auth.getSessions(res.locals.uid, req.sessionID), - title: '[[pages:account/sessions]]', - breadcrumbs: helpers.buildBreadcrumbs([{ text: username, url: `/user/${userslug}` }, { text: '[[pages:account/sessions]]' }]), - }; + payload.sessions = await user.auth.getSessions(res.locals.uid, req.sessionID); + payload.title = '[[pages:account/sessions]]'; + payload.breadcrumbs = helpers.buildBreadcrumbs([ + { text: username, url: `/user/${userslug}` }, + { text: '[[pages:account/sessions]]' }, + ]); res.render('account/sessions', payload); }; diff --git a/src/controllers/accounts/tags.js b/src/controllers/accounts/tags.js index 736b67aae0..a4a30404c3 100644 --- a/src/controllers/accounts/tags.js +++ b/src/controllers/accounts/tags.js @@ -1,7 +1,6 @@ 'use strict'; const db = require('../../database'); -const user = require('../../user'); const helpers = require('../helpers'); const tagsController = module.exports; @@ -10,10 +9,10 @@ tagsController.get = async function (req, res) { if (req.uid !== res.locals.uid) { return helpers.notAllowed(req, res); } - const { username, userslug } = await user.getUserFields(res.locals.uid, ['username', 'userslug']); + const payload = res.locals.userData; + const { username, userslug } = payload; const tagData = await db.getSortedSetRange(`uid:${res.locals.uid}:followed_tags`, 0, -1); - const payload = {}; payload.tags = tagData; payload.title = `[[pages:account/watched-tags, ${username}]]`; payload.breadcrumbs = helpers.buildBreadcrumbs([ diff --git a/src/controllers/accounts/uploads.js b/src/controllers/accounts/uploads.js index edfbe23740..b438b472f2 100644 --- a/src/controllers/accounts/uploads.js +++ b/src/controllers/accounts/uploads.js @@ -6,14 +6,14 @@ const nconf = require('nconf'); const db = require('../../database'); const helpers = require('../helpers'); -const user = require('../../user'); const meta = require('../../meta'); const pagination = require('../../pagination'); const uploadsController = module.exports; uploadsController.get = async function (req, res) { - const { username, userslug } = await user.getUserFields(res.locals.uid, ['username', 'userslug']); + const payload = res.locals.userData; + const { username, userslug } = payload; const page = Math.max(1, parseInt(req.query.page, 10) || 1); const itemsPerPage = 25; const start = (page - 1) * itemsPerPage; @@ -23,7 +23,6 @@ uploadsController.get = async function (req, res) { db.getSortedSetRevRange(`uid:${res.locals.uid}:uploads`, start, stop), ]); - const payload = {}; payload.uploads = uploadNames.map(uploadName => ({ name: uploadName, url: path.resolve(nconf.get('upload_url'), uploadName),