diff --git a/client/methods/deleteMessage.js b/client/methods/deleteMessage.js index 2f77e1d825cf82e9fed9153f29b6278e06020b0a..e7acb1c30aa31b643ce644aaf8114c5d9409c819 100644 --- a/client/methods/deleteMessage.js +++ b/client/methods/deleteMessage.js @@ -7,6 +7,9 @@ Meteor.methods({ return false; } + //We're now only passed in the `_id` property to lower the amount of data sent to the server + message = ChatMessage.findOne({ _id: message._id }); + const hasPermission = RocketChat.authz.hasAtLeastOnePermission('delete-message', message.rid); const deleteAllowed = RocketChat.settings.get('Message_AllowDeleting'); let deleteOwn = false; diff --git a/packages/rocketchat-file-upload/lib/FileUploadBase.js b/packages/rocketchat-file-upload/lib/FileUploadBase.js index 2e93fcfa166edced447f2231a211bf0ff884b4fc..9f8e4e6a1cf38d6794211fb66c2802e7a2b4e49d 100644 --- a/packages/rocketchat-file-upload/lib/FileUploadBase.js +++ b/packages/rocketchat-file-upload/lib/FileUploadBase.js @@ -9,7 +9,7 @@ UploadFS.config.defaultStorePermissions = new UploadFS.StorePermissions({ return userId === doc.userId; }, remove: function(userId, doc) { - return userId === doc.userId; + return RocketChat.authz.hasPermission(Meteor.userId(), 'delete-message', doc.rid) || (RocketChat.settings.get('Message_AllowDeleting') && userId === doc.userId); } }); diff --git a/packages/rocketchat-ui/lib/chatMessages.coffee b/packages/rocketchat-ui/lib/chatMessages.coffee index f944ac27d0ed5e02c18c820ed8c04a8bcde8e307..eaa18561e633addbb4a05f242504321ea2d6ee7a 100644 --- a/packages/rocketchat-ui/lib/chatMessages.coffee +++ b/packages/rocketchat-ui/lib/chatMessages.coffee @@ -253,7 +253,7 @@ class @ChatMessages toastr.error(t('Message_deleting_blocked')) return - Meteor.call 'deleteMessage', message, (error, result) -> + Meteor.call 'deleteMessage', { _id: message._id }, (error, result) -> if error return handleError(error) diff --git a/server/methods/deleteFileMessage.js b/server/methods/deleteFileMessage.js index a664e3e8169770ab81b2aabda19c67484a130580..55590f5702b2d8c746377a0b4372929e6da2c531 100644 --- a/server/methods/deleteFileMessage.js +++ b/server/methods/deleteFileMessage.js @@ -1,7 +1,14 @@ +/* global FileUpload */ Meteor.methods({ deleteFileMessage: function(fileID) { check(fileID, String); - return Meteor.call('deleteMessage', RocketChat.models.Messages.getMessageByFileId(fileID)); + const msg = RocketChat.models.Messages.getMessageByFileId(fileID); + + if (msg) { + return Meteor.call('deleteMessage', msg); + } + + return FileUpload.delete(fileID); } });