complete new audit system
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
import { Response } from 'express';
|
||||
import prisma from '../lib/prisma.js';
|
||||
import * as appSettingService from '../services/appSetting.service.js';
|
||||
import { logChange } from '../services/audit.service.js';
|
||||
import { ApiResponse, AuthRequest } from '../types/index.js';
|
||||
|
||||
export async function getAllSettings(req: AuthRequest, res: Response): Promise<void> {
|
||||
@@ -39,7 +41,22 @@ export async function updateSetting(req: AuthRequest, res: Response): Promise<vo
|
||||
return;
|
||||
}
|
||||
|
||||
await appSettingService.setSetting(key, String(value));
|
||||
// Vorherigen Stand laden für Audit
|
||||
const before = await prisma.appSetting.findUnique({ where: { key } });
|
||||
const oldValue = before?.value ?? '-';
|
||||
const newValue = String(value);
|
||||
|
||||
await appSettingService.setSetting(key, newValue);
|
||||
|
||||
const label = oldValue !== newValue
|
||||
? `Einstellung "${key}" geändert: ${oldValue} → ${newValue}`
|
||||
: `Einstellung "${key}" geändert`;
|
||||
await logChange({
|
||||
req, action: 'UPDATE', resourceType: 'AppSetting',
|
||||
resourceId: key,
|
||||
label,
|
||||
details: oldValue !== newValue ? { [key]: { von: oldValue, nach: newValue } } : undefined,
|
||||
});
|
||||
res.json({ success: true, message: 'Einstellung gespeichert' } as ApiResponse);
|
||||
} catch (error) {
|
||||
res.status(400).json({
|
||||
@@ -61,10 +78,27 @@ export async function updateSettings(req: AuthRequest, res: Response): Promise<v
|
||||
return;
|
||||
}
|
||||
|
||||
// Vorherige Werte laden für Audit
|
||||
const changes: Record<string, { von: unknown; nach: unknown }> = {};
|
||||
for (const [key, value] of Object.entries(settings)) {
|
||||
await appSettingService.setSetting(key, String(value));
|
||||
const before = await prisma.appSetting.findUnique({ where: { key } });
|
||||
const oldValue = before?.value ?? '-';
|
||||
const newValue = String(value);
|
||||
if (oldValue !== newValue) {
|
||||
changes[key] = { von: oldValue, nach: newValue };
|
||||
}
|
||||
await appSettingService.setSetting(key, newValue);
|
||||
}
|
||||
|
||||
const changeList = Object.entries(changes).map(([k, c]) => `${k}: ${c.von} → ${c.nach}`).join(', ');
|
||||
await logChange({
|
||||
req, action: 'UPDATE', resourceType: 'AppSetting',
|
||||
label: changeList
|
||||
? `Einstellungen aktualisiert: ${changeList}`
|
||||
: `Einstellungen aktualisiert (${Object.keys(settings).join(', ')})`,
|
||||
details: Object.keys(changes).length > 0 ? changes : undefined,
|
||||
});
|
||||
|
||||
res.json({ success: true, message: 'Einstellungen gespeichert' } as ApiResponse);
|
||||
} catch (error) {
|
||||
res.status(400).json({
|
||||
|
||||
Reference in New Issue
Block a user