feat: add RATE_LIMITING_DISABLED env var to bypass rate limiting (#2091)

Co-authored-by: Matthias Nannt <mail@matthiasnannt.com>
This commit is contained in:
Shubham Palriwala
2024-02-19 16:28:35 +05:30
committed by GitHub
parent 2425dc5459
commit acf279d3ba
5 changed files with 10 additions and 2 deletions

View File

@@ -141,3 +141,6 @@ ENTERPRISE_LICENSE_KEY=
# Send new users to customer.io
# CUSTOMER_IO_API_KEY=
# CUSTOMER_IO_SITE_ID=
# Ignore Rate Limiting across the Formbricks app
# RATE_LIMITING_DISABLED=1

View File

@@ -94,6 +94,7 @@ These variables can be provided at the runtime i.e. in your docker-compose file.
| EMAIL_AUTH_DISABLED | Disables the ability for users to signup or login via email and password if set to `1`. | optional | |
| PASSWORD_RESET_DISABLED | Disables password reset functionality if set to `1`. | optional | |
| EMAIL_VERIFICATION_DISABLED | Disables email verification if set to `1`. | optional | |
| RATE_LIMITING_DISABLED | Disables rate limiting if set to `1`. | optional | |
| INVITE_DISABLED | Disables the ability for invited users to create an account if set to `1`. | optional | |
| MAIL_FROM | Email address to send emails from. | optional (required if email services are to be enabled) | |
| SMTP_HOST | Host URL of your SMTP server. | optional (required if email services are to be enabled) | |

View File

@@ -17,7 +17,7 @@ import { getToken } from "next-auth/jwt";
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
import { WEBAPP_URL } from "@formbricks/lib/constants";
import { RATE_LIMITING_DISABLED, WEBAPP_URL } from "@formbricks/lib/constants";
export async function middleware(request: NextRequest) {
const token = await getToken({ req: request });
@@ -35,7 +35,7 @@ export async function middleware(request: NextRequest) {
return NextResponse.redirect(WEBAPP_URL + callbackUrl);
}
if (process.env.NODE_ENV !== "production") {
if (process.env.NODE_ENV !== "production" || RATE_LIMITING_DISABLED) {
return NextResponse.next();
}

View File

@@ -144,3 +144,5 @@ export const DEBUG = process.env.DEBUG === "1";
// Enterprise License constant
export const ENTERPRISE_LICENSE_KEY = env.ENTERPRISE_LICENSE_KEY;
export const RATE_LIMITING_DISABLED = env.RATE_LIMITING_DISABLED === "1";

View File

@@ -71,6 +71,7 @@ export const env = createEnv({
DEFAULT_TEAM_ROLE: z.enum(["owner", "admin", "editor", "developer", "viewer"]).optional(),
ONBOARDING_DISABLED: z.string().optional(),
ENTERPRISE_LICENSE_KEY: z.string().optional(),
RATE_LIMITING_DISABLED: z.enum(["1", "0"]).optional(),
},
/*
@@ -152,5 +153,6 @@ export const env = createEnv({
DEFAULT_TEAM_ROLE: process.env.DEFAULT_TEAM_ROLE,
ONBOARDING_DISABLED: process.env.ONBOARDING_DISABLED,
ENTERPRISE_LICENSE_KEY: process.env.ENTERPRISE_LICENSE_KEY,
RATE_LIMITING_DISABLED: process.env.RATE_LIMITING_DISABLED,
},
});