Files
bigcapital/packages/server/src/api/middleware/SettingsMiddleware.ts
2024-08-22 20:32:48 +02:00

32 lines
913 B
TypeScript

import { Container } from 'typedi';
import { Request, Response, NextFunction } from 'express';
import SettingsStore from '@/services/Settings/SettingsStore';
export default async (req: Request, res: Response, next: NextFunction) => {
const { tenantId } = req.user;
const settings = await initializeTenantSettings(tenantId);
req.settings = settings;
res.on('finish', async () => {
await settings.save();
});
next();
}
export const initializeTenantSettings = async (tenantId: number) => {
const tenantContainer = Container.of(`tenant-${tenantId}`);
if (tenantContainer && !tenantContainer.has('settings')) {
const { settingRepository } = tenantContainer.get('repositories');
const settings = new SettingsStore(settingRepository);
tenantContainer.set('settings', settings);
}
const settings = tenantContainer.get('settings');
await settings.load();
return settings;
}