Skip to content

Commit 1687c29

Browse files
committed
fix: configure CORS with explicit origin allowlist
Replace unrestricted cors() with origin allowlist from CORS_ORIGINS environment variable. Defaults to http://localhost:3000 for development. Fixes #2161
1 parent 7865310 commit 1687c29

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

apps/api/src/app.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,18 @@ import { notificationRoutes } from "./routes/notificationRoutes.js";
1414
import { uploadRoutes } from "./routes/uploadRoutes.js";
1515
import { searchRoutes } from "./routes/searchRoutes.js";
1616
import { adminRoutes } from "./routes/adminRoutes.js";
17+
import { env } from "./config/env.js";
1718

1819
export function createApp() {
1920
const app = express();
2021

22+
const allowedOrigins = env.corsOrigins.split(",").map(o => o.trim());
23+
2124
app.use(helmet());
22-
app.use(cors());
25+
app.use(cors({
26+
origin: allowedOrigins,
27+
credentials: true
28+
}));
2329
app.use(express.json());
2430
app.use(apiLimiter);
2531

apps/api/src/config/env.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@ export const env = {
33
port: Number(process.env.PORT ?? 4000),
44
jwtSecret: process.env.JWT_SECRET ?? "development-secret",
55
stripeSecretKey: process.env.STRIPE_SECRET_KEY ?? "",
6-
databaseUrl: process.env.DATABASE_URL ?? ""
6+
databaseUrl: process.env.DATABASE_URL ?? "",
7+
corsOrigins: process.env.CORS_ORIGINS ?? "http://localhost:3000"
78
};

0 commit comments

Comments
 (0)