This commit is contained in:
2026-09-13 06:12:37 +02:00
parent 33c6d0e76d
commit 466d3c4f28
20 changed files with 2156 additions and 134 deletions
+15 -15
View File
@@ -18,16 +18,12 @@ const computeBaseMode = (mode, ratings, session) => {
let effMode = Number(mode ?? 0);
const ratingsArr = (Array.isArray(ratings) && ratings.length > 0) ? ratings : null;
// For guest sessions, sanitize ratingsArr to only allow permitted ratings
// For guest sessions, strictly force SFW mode and SFW rating
let safeRatingsArr = ratingsArr;
if (!session && ratingsArr) {
const allowedRatings = ['sfw'];
if (cfg.websrv.public_nsfw) allowedRatings.push('nsfw');
if (cfg.websrv.public_untagged) allowedRatings.push('untagged');
safeRatingsArr = ratingsArr.filter(r => allowedRatings.includes(r));
if (safeRatingsArr.length === 0) {
return "1 = 0";
}
const isGuest = !session || !session.user;
if (isGuest) {
effMode = 0;
safeRatingsArr = ['sfw'];
} else if (isAnonSession(session)) {
const allowedModes = getAnonAllowedModes();
const canFilter = canAnonDo('filter');
@@ -35,10 +31,14 @@ const computeBaseMode = (mode, ratings, session) => {
if (!canFilter) {
safeRatingsArr = null;
effMode = 0;
} else if (safeRatingsArr) {
safeRatingsArr = safeRatingsArr.filter(r => allowedModes.includes(r));
if (safeRatingsArr.length === 0) {
return "1 = 0";
} else {
if (safeRatingsArr) {
safeRatingsArr = safeRatingsArr.filter(r => allowedModes.includes(r));
if (safeRatingsArr.length === 0) {
safeRatingsArr = (allowedModes.length === 1 && !allowedModes.includes('all'))
? [allowedModes[0]]
: (allowedModes.length < 5 ? [...allowedModes] : null);
}
}
}
@@ -84,11 +84,11 @@ const computeBaseMode = (mode, ratings, session) => {
}
} else if (effMode === 2) {
if (!cfg.websrv.public_untagged) {
baseMode = "1 = 0";
baseMode = "items.id in (select item_id from tags_assign where tag_id = 1)";
}
} else if (effMode === 1) {
if (!cfg.websrv.public_nsfw) {
baseMode = "1 = 0";
baseMode = "items.id in (select item_id from tags_assign where tag_id = 1)";
}
} else if (effMode === 4) {
baseMode = "1 = 0";