Better submission error message

This commit is contained in:
Ajay
2025-04-08 13:21:01 -04:00
parent 34a6a83e44
commit 3817d7fdba
2 changed files with 19 additions and 7 deletions

View File

@@ -20,7 +20,7 @@ import { parseUserAgent } from "../utils/userAgent";
import { getService } from "../utils/getService"; import { getService } from "../utils/getService";
import axios from "axios"; import axios from "axios";
import { vote } from "./voteOnSponsorTime"; import { vote } from "./voteOnSponsorTime";
import { canSubmit } from "../utils/permissions"; import { canSubmit, canSubmitGlobal } from "../utils/permissions";
import { getVideoDetails, videoDetails } from "../utils/getVideoDetails"; import { getVideoDetails, videoDetails } from "../utils/getVideoDetails";
import * as youtubeID from "../utils/youtubeID"; import * as youtubeID from "../utils/youtubeID";
import { acquireLock } from "../utils/redisLock"; import { acquireLock } from "../utils/redisLock";
@@ -509,6 +509,11 @@ export async function postSkipSegments(req: Request, res: Response): Promise<Res
} }
const userID: HashedUserID = await getHashCache(paramUserID); const userID: HashedUserID = await getHashCache(paramUserID);
const permission = await canSubmitGlobal(userID);
if (!permission.canSubmit) {
return res.status(403).send(permission.reason);
}
const invalidCheckResult = await checkInvalidFields(videoID, paramUserID, userID, segments, videoDurationParam, userAgent, service); const invalidCheckResult = await checkInvalidFields(videoID, paramUserID, userID, segments, videoDurationParam, userAgent, service);
if (!invalidCheckResult.pass) { if (!invalidCheckResult.pass) {
return res.status(invalidCheckResult.errorCode).send(invalidCheckResult.errorMessage); return res.status(invalidCheckResult.errorCode).send(invalidCheckResult.errorMessage);

View File

@@ -23,14 +23,14 @@ async function oldSubmitter(userID: HashedUserID): Promise<boolean> {
const result = await db.prepare("get", `SELECT count(*) as "submissionCount" FROM "sponsorTimes" WHERE "userID" = ? AND "timeSubmitted" < 1743827196000` const result = await db.prepare("get", `SELECT count(*) as "submissionCount" FROM "sponsorTimes" WHERE "userID" = ? AND "timeSubmitted" < 1743827196000`
, [userID], { useReplica: true }); , [userID], { useReplica: true });
return result.submissionCount > 1; return result.submissionCount >= 1;
} }
async function oldDeArrowSubmitter(userID: HashedUserID): Promise<boolean> { async function oldDeArrowSubmitter(userID: HashedUserID): Promise<boolean> {
const result = await db.prepare("get", `SELECT count(*) as "submissionCount" FROM "titles" WHERE "userID" = ? AND "timeSubmitted" < 1743827196000` const result = await db.prepare("get", `SELECT count(*) as "submissionCount" FROM "titles" WHERE "userID" = ? AND "timeSubmitted" < 1743827196000`
, [userID], { useReplica: true }); , [userID], { useReplica: true });
return result.submissionCount > 1; return result.submissionCount >= 1;
} }
export async function canSubmit(userID: HashedUserID, category: Category): Promise<CanSubmitResult> { export async function canSubmit(userID: HashedUserID, category: Category): Promise<CanSubmitResult> {
@@ -46,14 +46,21 @@ export async function canSubmit(userID: HashedUserID, category: Category): Promi
}; };
default: default:
return { return {
canSubmit: await oneOf([isUserVIP(userID), canSubmit: true,
oldSubmitter(userID) reason: ""
]),
reason: "We are currently experiencing a mass spam attack, we are restricting submissions for now"
}; };
} }
} }
export async function canSubmitGlobal(userID: HashedUserID): Promise<CanSubmitResult> {
return {
canSubmit: await oneOf([isUserVIP(userID),
oldSubmitter(userID)
]),
reason: "We are currently experiencing a mass spam attack, we are restricting submissions for now"
};
}
export async function canVote(userID: HashedUserID): Promise<CanSubmitResult> { export async function canVote(userID: HashedUserID): Promise<CanSubmitResult> {
return { return {
canSubmit: await oneOf([isUserVIP(userID), canSubmit: await oneOf([isUserVIP(userID),