33 lines
979 B
TypeScript
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);
|
|
}
|
|
}
|