summaryrefslogtreecommitdiff
path: root/src/lib/middleware.ts
diff options
context:
space:
mode:
authorRaphael Kabo <raphaelkabo@hey.com>2024-02-26 12:09:46 +0000
committerRaphael Kabo <raphaelkabo@hey.com>2024-02-26 12:09:46 +0000
commitc93fd6e2d455ea4208f9e5ca6bfbd1c0e9fd1ad9 (patch)
tree8baed2c232b629a98b21006adf440f6f83d5da57 /src/lib/middleware.ts
parent363cfbae076f4494ddd5fddcf03de622f6247051 (diff)
refactor: allow Cypress to override config
Diffstat (limited to 'src/lib/middleware.ts')
-rw-r--r--src/lib/middleware.ts29
1 files changed, 24 insertions, 5 deletions
diff --git a/src/lib/middleware.ts b/src/lib/middleware.ts
index 0594e90..5073137 100644
--- a/src/lib/middleware.ts
+++ b/src/lib/middleware.ts
@@ -1,14 +1,14 @@
-import { Request, Response } from "express";
+import { NextFunction, Request, Response } from "express";
import MagicLink from "../models/MagicLink.js";
-import getConfig from "../lib/config.js";
-
-const config = getConfig();
+import getConfig, { GathioConfig } from "../lib/config.js";
+import { deepMerge } from "../util/object.js";
export const checkMagicLink = async (
req: Request,
res: Response,
- next: any,
+ next: NextFunction,
) => {
+ const config = getConfig();
if (!config.general.creator_email_addresses?.length) {
// No creator email addresses are configured, so skip the magic link check
return next();
@@ -49,3 +49,22 @@ export const checkMagicLink = async (
}
next();
};
+
+// Route-specific middleware which injects the config into the request object
+// It can also be used to modify the config based on the request, which
+// we use for Cypress testing.
+export const getConfigMiddleware = (
+ req: Request,
+ res: Response,
+ next: NextFunction,
+) => {
+ const config = getConfig();
+ if (process.env.CYPRESS === "true" && req.cookies?.cypressConfigOverride) {
+ console.log("Overriding config with Cypress config");
+ const override = JSON.parse(req.cookies.cypressConfigOverride);
+ res.locals.config = deepMerge<GathioConfig>(config, override);
+ return next();
+ }
+ res.locals.config = config;
+ return next();
+};