Files
bodyshop-media-server/util/validateToken.ts
2025-07-23 17:59:13 -07:00

33 lines
979 B
TypeScript

import dotenv from "dotenv";
import { NextFunction, Request, Response } from "express";
import { resolve } from "path";
import { logger } from "../server.js";
dotenv.config({
path: resolve(process.cwd(), `.env.${process.env.NODE_ENV || "development"}`)
});
export default function ValidateImsToken(req: Request, res: Response, next: NextFunction) {
try {
const IMS_TOKEN: string = (process.env.IMS_TOKEN || "").trim();
if (!IMS_TOKEN) {
logger.debug("IMS_TOKEN not set, skipping token validation.");
next();
return;
}
const token = req.headers.ims_token || req.headers["ims-token"] || req.headers["x-ims-token"];
if (token !== IMS_TOKEN) {
logger.warning("Invalid IMS token provided.", { provided: token });
res.sendStatus(401);
return;
}
next();
} catch (error) {
logger.error("Error validating IMS token.", { error: (error as Error).message });
if (!res.headersSent) res.sendStatus(401);
}
}