summaryrefslogtreecommitdiff
path: root/apps/web/src/app/api
diff options
context:
space:
mode:
authorAhmet Kilinc <akx9@icloud.com>2025-07-16 01:05:42 +0100
committerAhmet Kilinc <akx9@icloud.com>2025-07-16 01:05:42 +0100
commitece9c78b16acd683f09b0fcd7c7b515c64da52f9 (patch)
treed6bc7096bcb465fbcf1867d9b112035949dbe455 /apps/web/src/app/api
parenteb49500592e5c50c5637c09ea585b065545f2135 (diff)
downloadopencut-ece9c78b16acd683f09b0fcd7c7b515c64da52f9.tar.gz
coderabbit comments
Diffstat (limited to 'apps/web/src/app/api')
-rw-r--r--apps/web/src/app/api/waitlist/route.ts5
-rw-r--r--apps/web/src/app/api/waitlist/token/route.ts13
2 files changed, 7 insertions, 11 deletions
diff --git a/apps/web/src/app/api/waitlist/route.ts b/apps/web/src/app/api/waitlist/route.ts
index 031ebd5a..076dd228 100644
--- a/apps/web/src/app/api/waitlist/route.ts
+++ b/apps/web/src/app/api/waitlist/route.ts
@@ -135,10 +135,7 @@ async function validateCSRFToken(request: NextRequest): Promise<boolean> {
const tokenTime = parseInt(timestamp);
if (now - tokenTime > TOKEN_EXPIRY) return false;
- const expectedSignature = crypto
- .createHmac("sha256", env.BETTER_AUTH_SECRET || "fallback-secret")
- .update(`${token}:${timestamp}`)
- .digest("hex");
+ const expectedSignature = crypto.createHmac("sha256", env.BETTER_AUTH_SECRET).update(`${token}:${timestamp}`).digest("hex");
return signature === expectedSignature;
}
diff --git a/apps/web/src/app/api/waitlist/token/route.ts b/apps/web/src/app/api/waitlist/token/route.ts
index 76622fc5..4c7695fa 100644
--- a/apps/web/src/app/api/waitlist/token/route.ts
+++ b/apps/web/src/app/api/waitlist/token/route.ts
@@ -5,6 +5,7 @@ import { env } from "@/env";
const CSRF_TOKEN_NAME = "waitlist-csrf";
const TOKEN_EXPIRY = 60 * 60 * 1000;
+const allowedHosts = env.NODE_ENV === "development" ? ["localhost:3000", "127.0.0.1:3000"] : ["opencut.app", "www.opencut.app"];
export async function GET(request: NextRequest) {
const referer = request.headers.get("referer");
@@ -12,14 +13,11 @@ export async function GET(request: NextRequest) {
if (referer) {
const refererUrl = new URL(referer);
- const allowedHosts = env.NODE_ENV === "development" ? ["localhost:3000", "127.0.0.1:3000"] : ["opencut.app", "www.opencut.app"];
if (!allowedHosts.some((allowed) => refererUrl.host === allowed || refererUrl.host.endsWith(allowed))) {
return NextResponse.json({ error: "Forbidden" }, { status: 403 });
}
} else if (host) {
- const allowedHosts = env.NODE_ENV === "development" ? ["localhost:3000", "127.0.0.1:3000"] : ["opencut.app", "www.opencut.app"];
-
if (!allowedHosts.some((allowed) => host === allowed || host.endsWith(allowed))) {
return NextResponse.json({ error: "Forbidden" }, { status: 403 });
}
@@ -27,12 +25,13 @@ export async function GET(request: NextRequest) {
return NextResponse.json({ error: "Forbidden" }, { status: 403 });
}
+ if (!env.BETTER_AUTH_SECRET) {
+ throw new Error("BETTER_AUTH_SECRET must be configured");
+ }
+
const token = crypto.randomBytes(32).toString("hex");
const timestamp = Date.now();
- const signature = crypto
- .createHmac("sha256", env.BETTER_AUTH_SECRET || "fallback-secret")
- .update(`${token}:${timestamp}`)
- .digest("hex");
+ const signature = crypto.createHmac("sha256", env.BETTER_AUTH_SECRET).update(`${token}:${timestamp}`).digest("hex");
const cookieStore = await cookies();
cookieStore.set(CSRF_TOKEN_NAME, `${token}:${timestamp}:${signature}`, {