From 4be20799ecf78ed51b81c00573670c3de81c0071 Mon Sep 17 00:00:00 2001 From: barisusakli <barisusakli@gmail.com> Date: Tue, 20 Sep 2016 14:41:53 +0300 Subject: [PATCH] fix getRecentChats --- public/src/client/chats/recent.js | 1 + src/controllers/accounts/chats.js | 3 +++ src/socket.io/modules.js | 14 +++++++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/public/src/client/chats/recent.js b/public/src/client/chats/recent.js index 6905841269..9afc7ab76a 100644 --- a/public/src/client/chats/recent.js +++ b/public/src/client/chats/recent.js @@ -23,6 +23,7 @@ define('forum/chats/recent', function() { } recentChats.attr('loading', 1); socket.emit('modules.chats.getRecentChats', { + uid: ajaxify.data.uid, after: recentChats.attr('data-nextstart') }, function(err, data) { if (err) { diff --git a/src/controllers/accounts/chats.js b/src/controllers/accounts/chats.js index b638cb0006..c6ff2886c1 100644 --- a/src/controllers/accounts/chats.js +++ b/src/controllers/accounts/chats.js @@ -16,6 +16,7 @@ chatsController.get = function(req, res, callback) { } var uid; var recentChats; + async.waterfall([ function(next) { user.getUidByUserslug(req.params.userslug, next); @@ -32,6 +33,7 @@ chatsController.get = function(req, res, callback) { if (!req.params.roomid) { return res.render('chats', { rooms: recentChats.rooms, + uid: uid, userslug: req.params.userslug, nextStart: recentChats.nextStart, allowed: true, @@ -69,6 +71,7 @@ chatsController.get = function(req, res, callback) { }); room.rooms = recentChats.rooms; + room.uid = uid; room.userslug = req.params.userslug; room.nextStart = recentChats.nextStart; room.title = room.roomName; diff --git a/src/socket.io/modules.js b/src/socket.io/modules.js index b77d22252d..900b4de0e6 100644 --- a/src/socket.io/modules.js +++ b/src/socket.io/modules.js @@ -295,10 +295,18 @@ SocketModules.chats.getRecentChats = function(socket, data, callback) { if (!data || !utils.isNumber(data.after)) { return callback(new Error('[[error:invalid-data]]')); } - var start = parseInt(data.after, 10), - stop = start + 9; + var start = parseInt(data.after, 10); + var stop = start + 9; + if (socket.uid === parseInt(data.uid, 10)) { + return Messaging.getRecentChats(socket.uid, start, stop, callback); + } - Messaging.getRecentChats(socket.uid, start, stop, callback); + user.isAdminOrGlobalMod(socket.uid, function(err, isAdminOrGlobalMod) { + if (err || !isAdminOrGlobalMod) { + return callback(err || new Error('[[error:no-privileges]]')); + } + Messaging.getRecentChats(data.uid, start, stop, callback); + }); }; SocketModules.chats.hasPrivateChat = function(socket, uid, callback) {