messages before/after soundness check

This commit is contained in:
Erkin Alp Güney 2022-04-30 07:44:44 +03:00
parent 6950166ee8
commit 9711f95072

View File

@ -11,6 +11,7 @@ import {
getRights,
Message,
MessageCreateEvent,
Snowflake,
uploadFile,
Member
} from "@fosscord/util";
@ -86,7 +87,7 @@ router.get("/", async (req: Request, res: Response) => {
const before = req.query.before ? `${req.query.before}` : undefined;
const after = req.query.after ? `${req.query.after}` : undefined;
const limit = Number(req.query.limit) || 50;
if (limit < 1 || limit > 100) throw new HTTPError("limit must be between 1 and 100");
if (limit < 1 || limit > 100) throw new HTTPError("limit must be between 1 and 100", 422);
var halfLimit = Math.floor(limit / 2);
@ -101,8 +102,15 @@ router.get("/", async (req: Request, res: Response) => {
relations: ["author", "webhook", "application", "mentions", "mention_roles", "mention_channels", "sticker_items", "attachments"]
};
if (after) query.where.id = MoreThan(after);
else if (before) query.where.id = LessThan(before);
if (after) {
if (after > new Snowflake()) return res.status(422);
query.where.id = MoreThan(after);
}
else if (before) {
if (before < req.params.channel_id) return res.status(422);
query.where.id = LessThan(before);
}
else if (around) {
query.where.id = [
MoreThan((BigInt(around) - BigInt(halfLimit)).toString()),
@ -243,3 +251,4 @@ router.post(
return res.json(message);
}
);