Verify is user can delete message getting the message from db before

pull/818/head
Rodrigo Nascimento 10 years ago
parent 65c8e83d36
commit e920f8089e
  1. 18
      server/methods/deleteMessage.coffee

@ -5,7 +5,12 @@ Meteor.methods
hasPermission = RocketChat.authz.hasPermission(Meteor.userId(), 'delete-message', message.rid)
deleteAllowed = RocketChat.settings.get 'Message_AllowDeleting'
deleteOwn = message?.u?._id is Meteor.userId()
originalMessage = ChatMessage.findOne message._id, {fields: {u: 1, rid: 1}}
if not originalMessage?
throw new Meteor.Error 'message-deleting-not-allowed', "[methods] deleteMessage -> Message with id [#{message._id} dos not exists]"
deleteOwn = originalMessage?.u?._id is Meteor.userId()
unless hasPermission or (deleteAllowed and deleteOwn)
throw new Meteor.Error 'message-deleting-not-allowed', "[methods] deleteMessage -> Message deleting not allowed"
@ -15,13 +20,14 @@ Meteor.methods
keepHistory = RocketChat.settings.get 'Message_KeepHistory'
showDeletedStatus = RocketChat.settings.get 'Message_ShowDeletedStatus'
deleteQuery =
_id: message._id
#deleteQuery['u._id'] = Meteor.userId() if user?.admin isnt true
deleteQuery =
_id: originalMessage._id
deleteQuery['u._id'] = Meteor.userId() unless hasPermission
#deleteQuery['u._id'] = Meteor.userId() if user?.admin isnt true
if keepHistory
if showDeletedStatus
history = ChatMessage.findOne message._id
history = ChatMessage.findOne originalMessage._id
history._hidden = true
history.parent = history._id
history.ets = new Date()
@ -43,4 +49,4 @@ Meteor.methods
t: 'rm'
ets: new Date()
else
RocketChat.Notifications.notifyRoom message.rid, 'deleteMessage', { _id: message._id }
RocketChat.Notifications.notifyRoom originalMessage.rid, 'deleteMessage', { _id: originalMessage._id }

Loading…
Cancel
Save