2024-04-02 11:21:38 +02:00
|
|
|
import type { Request, Response, NextFunction } from 'express';
|
|
|
|
import type { IUnleashConfig } from '../types';
|
|
|
|
|
|
|
|
export const bearerTokenMiddleware = ({
|
2024-04-03 12:29:09 +02:00
|
|
|
server,
|
2024-04-02 11:21:38 +02:00
|
|
|
getLogger,
|
|
|
|
flagResolver,
|
2024-04-03 12:29:09 +02:00
|
|
|
}: Pick<IUnleashConfig, 'server' | 'getLogger' | 'flagResolver'>) => {
|
2024-04-02 11:21:38 +02:00
|
|
|
const logger = getLogger('/middleware/bearer-token-middleware.ts');
|
|
|
|
logger.debug('Enabling bearer token middleware');
|
2024-04-03 12:29:09 +02:00
|
|
|
const baseUriPath = server.baseUriPath || '';
|
2024-04-02 11:21:38 +02:00
|
|
|
|
|
|
|
return (req: Request, _: Response, next: NextFunction) => {
|
|
|
|
if (
|
2024-04-03 12:29:09 +02:00
|
|
|
req.path.startsWith(`${baseUriPath}/api/signal-endpoint/`) ||
|
2024-04-02 11:21:38 +02:00
|
|
|
flagResolver.isEnabled('bearerTokenMiddleware')
|
|
|
|
) {
|
|
|
|
const authHeader = req.headers.authorization;
|
|
|
|
|
|
|
|
if (authHeader) {
|
|
|
|
req.headers.authorization = authHeader.replace(
|
|
|
|
/^Bearer\s+/i,
|
|
|
|
'',
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
next();
|
|
|
|
};
|
|
|
|
};
|