summaryrefslogtreecommitdiff
path: root/src/lib/middleware.ts
diff options
context:
space:
mode:
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();
+};