1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-31 00:16:47 +01:00
unleash.unleash/src/lib/features/maintenance/maintenance-middleware.ts

33 lines
1.1 KiB
TypeScript
Raw Normal View History

import type { IUnleashConfig } from '../../types';
import type MaintenanceService from './maintenance-service';
import type { IAuthRequest } from '../../routes/unleash-types';
2022-12-19 08:01:04 +01:00
export const MAINTENANCE_MODE_ENABLED =
'Unleash is currently in maintenance mode.';
2022-12-21 12:23:44 +01:00
const maintenanceMiddleware = (
{ getLogger }: Pick<IUnleashConfig, 'getLogger' | 'flagResolver'>,
maintenanceService: MaintenanceService,
): any => {
2022-12-19 08:01:04 +01:00
const logger = getLogger('/middleware/maintenance-middleware.ts');
logger.debug('Enabling Maintenance middleware');
2022-12-21 12:23:44 +01:00
return async (req: IAuthRequest, res, next) => {
const isProtectedPath = !req.path.includes('/maintenance');
2022-12-19 08:01:04 +01:00
const writeMethod = ['POST', 'PUT', 'DELETE'].includes(req.method);
2022-12-21 12:23:44 +01:00
if (
isProtectedPath &&
writeMethod &&
(await maintenanceService.isMaintenanceMode())
) {
res.status(503).send({
message: MAINTENANCE_MODE_ENABLED,
});
2022-12-19 08:01:04 +01:00
} else {
next();
}
};
};
export default maintenanceMiddleware;