mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 08:36:12 +01:00
fix: escape system message, don't allow editing system messages
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
const validator = require('validator');
|
||||
|
||||
var db = require('../database');
|
||||
var user = require('../user');
|
||||
var utils = require('../utils');
|
||||
@@ -79,6 +81,7 @@ module.exports = function (Messaging) {
|
||||
|
||||
messages = await Promise.all(messages.map(async (message) => {
|
||||
if (message.system) {
|
||||
message.content = validator.escape(String(message.content));
|
||||
return message;
|
||||
}
|
||||
|
||||
|
||||
@@ -57,10 +57,10 @@ module.exports = function (Messaging) {
|
||||
|
||||
const [isAdmin, messageData] = await Promise.all([
|
||||
user.isAdministrator(uid),
|
||||
Messaging.getMessageFields(messageId, ['fromuid', 'timestamp']),
|
||||
Messaging.getMessageFields(messageId, ['fromuid', 'timestamp', 'system']),
|
||||
]);
|
||||
|
||||
if (isAdmin) {
|
||||
if (isAdmin && !messageData.system) {
|
||||
return;
|
||||
}
|
||||
var chatConfigDuration = meta.config[durationConfig];
|
||||
@@ -68,7 +68,7 @@ module.exports = function (Messaging) {
|
||||
throw new Error('[[error:chat-' + type + '-duration-expired, ' + meta.config[durationConfig] + ']]');
|
||||
}
|
||||
|
||||
if (messageData.fromuid === parseInt(uid, 10)) {
|
||||
if (messageData.fromuid === parseInt(uid, 10) && !messageData.system) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -119,7 +119,10 @@ describe('Messaging Library', function () {
|
||||
assert.equal(messages.length, 1);
|
||||
assert.strictEqual(messages[0].system, true);
|
||||
assert.strictEqual(messages[0].content, 'user-join');
|
||||
done();
|
||||
socketModules.chats.edit({ uid: fooUid }, { roomId: roomId, mid: messages[0].messageId, message: 'test' }, function (err) {
|
||||
assert.equal(err.message, '[[error:cant-edit-chat-message]]');
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user