diff --git a/client/src/views/notification/items/message.js b/client/src/views/notification/items/message.js index 9113e01977..6fd776f2d2 100644 --- a/client/src/views/notification/items/message.js +++ b/client/src/views/notification/items/message.js @@ -26,7 +26,10 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -Espo.define('views/notification/items/message', 'views/notification/items/base', function (Dep) { +define( + 'views/notification/items/message', + ['views/notification/items/base', 'lib!marked', 'lib!dompurify'], + function (Dep, marked, DOMPurify) { return Dep.extend({ @@ -43,18 +46,31 @@ Espo.define('views/notification/items/message', 'views/notification/items/base', this.style = data.style || 'text-muted'; - this.messageTemplate = this.model.get('message') || data.message || ''; + let message = marked( + (this.model.get('message') || data.message || '') + ); + + this.messageTemplate = DOMPurify.sanitize(message).toString(); this.userId = data.userId; - this.messageData['entityType'] = this.getHelper().escapeString(Espo.Utils.upperCaseFirst((this.translate(data.entityType, 'scopeNames') || '').toLowerCase())); + this.messageData['entityType'] = this.getHelper() + .escapeString( + Espo.Utils.upperCaseFirst((this.translate(data.entityType, 'scopeNames') || '').toLowerCase()) + ); - this.messageData['user'] = '' + this.getHelper().escapeString(data.userName) + ''; - this.messageData['entity'] = '' + this.getHelper().escapeString(data.entityName) + ''; + this.messageData['user'] = + '' + + this.getHelper().escapeString(data.userName) + ''; + + this.messageData['entity'] = + '' + this.getHelper().escapeString(data.entityName) + + ''; this.createMessage(); - } + }, }); }); -