import {createLogger} from "@gongt/ts-stl-library/debug/create-logger"; import {LOG_LEVEL} from "@gongt/ts-stl-library/debug/levels"; import DI, {DDNames} from "@gongt/ts-stl-library/DI"; import {NextFunction, Request, Response} from "express-serve-static-core"; const debug = createLogger(LOG_LEVEL.DATA, 'protect'); export function serverRequestOnly(customKey?: string) { const key = customKey || DI.get(DDNames.serverRequestKey); return function serverRequestOnly(req: Request, res: Response, next: NextFunction) { if (req.headers && req.headers['x-server-key'] === key) { next(); } else { debug('request key check\n\tinput = %s\n\texpect = %s', req.headers['x-server-key'], key); next(new Error('Can not request ' + req.originalUrl)); } } }