Require time when generating key

This commit is contained in:
Ajay 2023-08-06 13:42:33 -04:00
parent 48fa55cc7a
commit e9e1fd5228

View file

@ -8,6 +8,7 @@ interface GenerateTokenRequest extends Request {
code: string; code: string;
adminUserID?: string; adminUserID?: string;
total?: string; total?: string;
key?: string;
}, },
params: { params: {
type: TokenType; type: TokenType;
@ -15,13 +16,17 @@ interface GenerateTokenRequest extends Request {
} }
export async function generateTokenRequest(req: GenerateTokenRequest, res: Response): Promise<Response> { export async function generateTokenRequest(req: GenerateTokenRequest, res: Response): Promise<Response> {
const { query: { code, adminUserID, total }, params: { type } } = req; const { query: { code, adminUserID, total, key }, params: { type } } = req;
const adminUserIDHash = adminUserID ? (await getHashCache(adminUserID)) : null; const adminUserIDHash = adminUserID ? (await getHashCache(adminUserID)) : null;
if (!type || (!code && type === TokenType.patreon)) { if (!type || (!code && type === TokenType.patreon)) {
return res.status(400).send("Invalid request"); 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 if (type === TokenType.patreon
|| ([TokenType.local, TokenType.gift].includes(type) && adminUserIDHash === config.adminUserID) || ([TokenType.local, TokenType.gift].includes(type) && adminUserIDHash === config.adminUserID)
|| type === TokenType.free) { || type === TokenType.free) {