The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/packages/rocketchat-lib/server/methods/updateMessage.coffee

30 lines
1.2 KiB

Meteor.methods
updateMessage: (message) ->
check message, Match.ObjectIncluding({_id:String})
if not Meteor.userId()
throw new Meteor.Error('error-invalid-user', "Invalid user", { method: 'updateMessage' })
originalMessage = RocketChat.models.Messages.findOneById message._id
if not originalMessage?._id?
return
hasPermission = RocketChat.authz.hasPermission(Meteor.userId(), 'edit-message', message.rid)
editAllowed = RocketChat.settings.get 'Message_AllowEditing'
editOwn = originalMessage?.u?._id is Meteor.userId()
me = RocketChat.models.Users.findOneById Meteor.userId()
unless hasPermission or (editAllowed and editOwn)
throw new Meteor.Error 'error-action-not-allowed', 'Message editing not allowed', { method: 'updateMessage', action: 'Message_editing' }
blockEditInMinutes = RocketChat.settings.get 'Message_AllowEditing_BlockEditInMinutes'
if blockEditInMinutes? and blockEditInMinutes isnt 0
msgTs = moment(originalMessage.ts) if originalMessage.ts?
currentTsDiff = moment().diff(msgTs, 'minutes') if msgTs?
if currentTsDiff > blockEditInMinutes
throw new Meteor.Error 'error-message-editing-blocked', 'Message editing is blocked', { method: 'updateMessage' }
RocketChat.updateMessage(message, Meteor.user());