Skip to content

Commit

Permalink
fix: #8539, enforce content checks for post queue
Browse files Browse the repository at this point in the history
  • Loading branch information
barisusakli committed Jul 31, 2020
1 parent 776e34a commit bb22418
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 18 deletions.
6 changes: 6 additions & 0 deletions src/posts/queue.js
Expand Up @@ -94,6 +94,12 @@ module.exports = function (Posts) {
reply: 'topics:reply',
};

topics.checkContent(data.content);
if (type === 'topic') {
topics.checkTitle(data.title);
await topics.validateTags(data.tags);
}

const [canPost] = await Promise.all([
privileges.categories.can(typeToPrivilege[type], cid, data.uid),
user.isReadyToQueue(data.uid, cid),
Expand Down
44 changes: 26 additions & 18 deletions src/topics/create.js
@@ -1,24 +1,24 @@

'use strict';

var _ = require('lodash');
var validator = require('validator');

var db = require('../database');
var utils = require('../utils');
var plugins = require('../plugins');
var analytics = require('../analytics');
var user = require('../user');
var meta = require('../meta');
var posts = require('../posts');
var privileges = require('../privileges');
var categories = require('../categories');
const _ = require('lodash');
const validator = require('validator');

const db = require('../database');
const utils = require('../utils');
const plugins = require('../plugins');
const analytics = require('../analytics');
const user = require('../user');
const meta = require('../meta');
const posts = require('../posts');
const privileges = require('../privileges');
const categories = require('../categories');
const translator = require('../translator');

module.exports = function (Topics) {
Topics.create = async function (data) {
// This is an internal method, consider using Topics.post instead
var timestamp = data.timestamp || Date.now();
const timestamp = data.timestamp || Date.now();
await Topics.resizeAndUploadThumb(data);

const tid = await db.incrObjectField('global', 'nextTid');
Expand Down Expand Up @@ -71,9 +71,9 @@ module.exports = function (Topics) {
if (data.content) {
data.content = utils.rtrim(data.content);
}
check(data.title, meta.config.minimumTitleLength, meta.config.maximumTitleLength, 'title-too-short', 'title-too-long');
Topics.checkTitle(data.title);
await Topics.validateTags(data.tags, data.cid);
check(data.content, meta.config.minimumPostLength, meta.config.maximumPostLength, 'content-too-short', 'content-too-long');
Topics.checkContent(data.content);

const [categoryExists, canCreate, canTag] = await Promise.all([
categories.exists(data.cid),
Expand Down Expand Up @@ -135,8 +135,8 @@ module.exports = function (Topics) {
};

Topics.reply = async function (data) {
var tid = data.tid;
var uid = data.uid;
const tid = data.tid;
const uid = data.uid;

const topicData = await Topics.getTopicData(tid);
if (!topicData) {
Expand Down Expand Up @@ -170,7 +170,7 @@ module.exports = function (Topics) {
if (data.content) {
data.content = utils.rtrim(data.content);
}
check(data.content, meta.config.minimumPostLength, meta.config.maximumPostLength, 'content-too-short', 'content-too-long');
Topics.checkContent(data.content);

data.ip = data.req ? data.req.ip : null;
let postData = await posts.create(data);
Expand Down Expand Up @@ -235,6 +235,14 @@ module.exports = function (Topics) {
return postData;
}

Topics.checkTitle = function (title) {
check(title, meta.config.minimumTitleLength, meta.config.maximumTitleLength, 'title-too-short', 'title-too-long');
};

Topics.checkContent = function (content) {
check(content, meta.config.minimumPostLength, meta.config.maximumPostLength, 'content-too-short', 'content-too-long');
};

function check(item, min, max, minError, maxError) {
// Trim and remove HTML (latter for composers that send in HTML, like redactor)
if (typeof item === 'string') {
Expand Down

0 comments on commit bb22418

Please sign in to comment.