diff --git a/src/socket.io/posts/votes.js b/src/socket.io/posts/votes.js index 3e1be2b5e3..968da304c3 100644 --- a/src/socket.io/posts/votes.js +++ b/src/socket.io/posts/votes.js @@ -81,16 +81,17 @@ module.exports = function (SocketPosts) { if (!isArray) { cids = [cids]; } + const uniqCids = _.uniq(cids); const [canRead, isAdmin, isMod] = await Promise.all([ privileges.categories.isUserAllowedTo( - 'topics:read', _.uniq(cids), uid + 'topics:read', uniqCids, uid ), privileges.users.isAdministrator(uid), privileges.users.isModerator(uid, cids), ]); - + const cidToAllowed = _.zip(uniqCids, canRead); const checks = cids.map( - (cid, index) => isAdmin || isMod[index] || (canRead[index] && !!meta.config.votesArePublic) + (cid, index) => isAdmin || isMod[index] || (cidToAllowed[index] && !!meta.config.votesArePublic) ); return isArray ? checks : checks[0]; }