feat: Implement user-specific camera settings storage using a user:cameraId key and track the user who updated them.

This commit is contained in:
sebseb7
2025-12-18 15:07:05 +01:00
parent 0a11af6239
commit 6b0381aded

View File

@@ -212,11 +212,15 @@ function saveCameraSettings(settings) {
fs.writeFileSync(SETTINGS_FILE, JSON.stringify(settings, null, 2)); fs.writeFileSync(SETTINGS_FILE, JSON.stringify(settings, null, 2));
} }
// Get camera settings
// Get camera settings // Get camera settings
app.get('/settings/:cameraId', authenticate, (req, res) => { app.get('/settings/:cameraId', authenticate, (req, res) => {
const { cameraId } = req.params; const { cameraId } = req.params;
const user = req.authenticatedUser;
const storageKey = `${user}:${cameraId}`;
const allSettings = loadCameraSettings(); const allSettings = loadCameraSettings();
const settings = allSettings[cameraId] || {}; const settings = allSettings[storageKey] || {};
res.json({ res.json({
cameraId, cameraId,
@@ -235,6 +239,8 @@ app.get('/settings/:cameraId', authenticate, (req, res) => {
// Update camera settings // Update camera settings
app.put('/settings/:cameraId', authenticate, express.json(), (req, res) => { app.put('/settings/:cameraId', authenticate, express.json(), (req, res) => {
const { cameraId } = req.params; const { cameraId } = req.params;
const user = req.authenticatedUser;
const storageKey = `${user}:${cameraId}`;
const newSettings = req.body; const newSettings = req.body;
if (!newSettings || typeof newSettings !== 'object') { if (!newSettings || typeof newSettings !== 'object') {
@@ -242,10 +248,11 @@ app.put('/settings/:cameraId', authenticate, express.json(), (req, res) => {
} }
const allSettings = loadCameraSettings(); const allSettings = loadCameraSettings();
allSettings[cameraId] = { allSettings[storageKey] = {
...(allSettings[cameraId] || {}), ...(allSettings[storageKey] || {}),
...newSettings, ...newSettings,
updatedAt: new Date().toISOString() updatedAt: new Date().toISOString(),
updatedBy: user
}; };
try { try {
@@ -253,7 +260,7 @@ app.put('/settings/:cameraId', authenticate, express.json(), (req, res) => {
res.json({ res.json({
success: true, success: true,
cameraId, cameraId,
settings: allSettings[cameraId] settings: allSettings[storageKey]
}); });
} catch (error) { } catch (error) {
res.status(500).json({ error: 'Failed to save settings', details: error.message }); res.status(500).json({ error: 'Failed to save settings', details: error.message });