From 690b5aa4262dafc39274d348d5584371450134f4 Mon Sep 17 00:00:00 2001 From: Rushil Perera Date: Mon, 2 Sep 2024 13:19:50 -0400 Subject: [PATCH] fix: verifyQstashHeader now returns false when SignatureError is thrown --- src/controllers/upcoming/titles/index.ts | 1 - src/libs/qstash/verifyQstashHeader.ts | 30 +++++++++++++++--------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/controllers/upcoming/titles/index.ts b/src/controllers/upcoming/titles/index.ts index c4311af..7ee8cac 100644 --- a/src/controllers/upcoming/titles/index.ts +++ b/src/controllers/upcoming/titles/index.ts @@ -16,7 +16,6 @@ import { getUpcomingTitlesFromAnilist } from "./anilist"; const app = new Hono(); app.post("/titles", async (c) => { - console.log(c.req.path); if ( !(await verifyQstashHeader( env(c, "workerd"), diff --git a/src/libs/qstash/verifyQstashHeader.ts b/src/libs/qstash/verifyQstashHeader.ts index d7efaa9..f529ee5 100644 --- a/src/libs/qstash/verifyQstashHeader.ts +++ b/src/libs/qstash/verifyQstashHeader.ts @@ -1,8 +1,8 @@ -import { Receiver } from "@upstash/qstash"; +import { Receiver, SignatureError } from "@upstash/qstash"; import type { Env } from "~/types/env"; -export function verifyQstashHeader( +export async function verifyQstashHeader( env: Env, route: string, signature: string | undefined, @@ -12,14 +12,22 @@ export function verifyQstashHeader( return Promise.resolve(false); } - const receiver = new Receiver({ - currentSigningKey: env.QSTASH_CURRENT_SIGNING_KEY, - nextSigningKey: env.QSTASH_NEXT_SIGNING_KEY, - }); + try { + const receiver = new Receiver({ + currentSigningKey: env.QSTASH_CURRENT_SIGNING_KEY, + nextSigningKey: env.QSTASH_NEXT_SIGNING_KEY, + }); - return receiver.verify({ - body, - signature, - url: `https://aniplay-v2.rururu.workers.dev${route}`, - }); + return await receiver.verify({ + body, + signature, + url: `https://aniplay-v2.rururu.workers.dev${route}`, + }); + } catch (error) { + if (error instanceof SignatureError) { + return Promise.resolve(false); + } + + throw error; + } }