added ratelimits

This commit is contained in:
Dhravya 2024-04-11 20:15:10 -07:00
parent bb98d22f7a
commit 5d507ef7ed
6 changed files with 41 additions and 0 deletions

1
apps/web/env.d.ts vendored
View file

@ -5,6 +5,7 @@ declare global {
DATABASE: D1Database;
VECTORIZE_INDEX: VectorizeIndex;
AI: any;
RATELIMITER: any;
}
}
}

View file

@ -13,6 +13,14 @@ export async function POST(req: NextRequest) {
req.cookies.get("authjs.session-token")?.value ??
req.headers.get("Authorization")?.replace("Bearer ", "");
const { success } = await process.env.RATELIMITER.limit({ key: token });
if (!success) {
return new Response(JSON.stringify({ message: "Rate limit exceeded" }), {
status: 429,
});
}
const sessionData = await db
.select()
.from(sessions)

View file

@ -14,6 +14,14 @@ export async function POST(req: NextRequest) {
req.cookies.get("authjs.session-token")?.value ??
req.headers.get("Authorization")?.replace("Bearer ", "");
const { success } = await process.env.RATELIMITER.limit({ key: token });
if (!success) {
return new Response(JSON.stringify({ message: "Rate limit exceeded" }), {
status: 429,
});
}
const sessionData = await db
.select()
.from(sessions)

View file

@ -13,6 +13,14 @@ export async function GET(req: NextRequest) {
req.cookies.get("authjs.session-token")?.value ??
req.headers.get("Authorization")?.replace("Bearer ", "");
const { success } = await process.env.RATELIMITER.limit({ key: token });
if (!success) {
return new Response(JSON.stringify({ message: "Rate limit exceeded" }), {
status: 429,
});
}
const sessionData = await db
.select()
.from(sessions)

View file

@ -27,6 +27,14 @@ export async function POST(req: NextRequest) {
);
}
const { success } = await process.env.RATELIMITER.limit({ key: token });
if (!success) {
return new Response(JSON.stringify({ message: "Rate limit exceeded" }), {
status: 429,
});
}
const sessionData = await db
.select()
.from(sessions)

View file

@ -10,3 +10,11 @@ index_name = "anycontext-idx"
binding = "DATABASE"
database_name = "dev-d1-anycontext"
database_id = "fc562605-157a-4f60-b439-2a24ffed5b4c"
[[unsafe.bindings]]
name = "RATELIMITER"
type = "ratelimit"
namespace_id = "1001"
# 25 requests per 10 seconds
simple = { limit = 25, period = 10 }