mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-27 00:56:13 +01:00
fix: #13087, disallow following cid -1
This commit is contained in:
@@ -4,19 +4,25 @@ const _ = require('lodash');
|
||||
|
||||
const db = require('../database');
|
||||
const categories = require('../categories');
|
||||
const activitypub = require('../activitypub');
|
||||
const plugins = require('../plugins');
|
||||
const utils = require('../utils');
|
||||
|
||||
module.exports = function (User) {
|
||||
User.setCategoryWatchState = async function (uid, cids, state) {
|
||||
if (!activitypub.helpers.isUri(uid) && !(parseInt(uid, 10) > 0)) {
|
||||
if (utils.isNumber(uid) && parseInt(uid, 10) <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const isStateValid = Object.values(categories.watchStates).includes(parseInt(state, 10));
|
||||
if (!isStateValid) {
|
||||
throw new Error('[[error:invalid-watch-state]]');
|
||||
}
|
||||
cids = Array.isArray(cids) ? cids : [cids];
|
||||
|
||||
cids = new Set(Array.isArray(cids) ? cids : [cids]);
|
||||
cids.delete(-1); // cannot watch cid -1
|
||||
cids.delete('-1');
|
||||
cids = Array.from(cids);
|
||||
|
||||
const exists = await categories.exists(cids);
|
||||
if (exists.includes(false)) {
|
||||
throw new Error('[[error:no-category]]');
|
||||
|
||||
Reference in New Issue
Block a user