fix: #13087, disallow following cid -1

This commit is contained in:
Julian Lam
2025-01-29 12:44:42 -05:00
parent 6d88dcb2b5
commit ddb6e0f32b

View File

@@ -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]]');