diff --git a/src/routes/generateToken.ts b/src/routes/generateToken.ts index 575df4c..85ab270 100644 --- a/src/routes/generateToken.ts +++ b/src/routes/generateToken.ts @@ -8,6 +8,7 @@ interface GenerateTokenRequest extends Request { code: string; adminUserID?: string; total?: string; + key?: string; }, params: { type: TokenType; @@ -15,13 +16,17 @@ interface GenerateTokenRequest extends Request { } export async function generateTokenRequest(req: GenerateTokenRequest, res: Response): Promise { - const { query: { code, adminUserID, total }, params: { type } } = req; + const { query: { code, adminUserID, total, key }, params: { type } } = req; const adminUserIDHash = adminUserID ? (await getHashCache(adminUserID)) : null; if (!type || (!code && type === TokenType.patreon)) { return res.status(400).send("Invalid request"); } + if (type === TokenType.free && (!key || Math.abs(Date.now() - parseInt(key)) > 1000 * 60 * 60 * 24)) { + return res.status(400).send("Invalid request"); + } + if (type === TokenType.patreon || ([TokenType.local, TokenType.gift].includes(type) && adminUserIDHash === config.adminUserID) || type === TokenType.free) {