feat: Implement user-specific camera settings storage using a user:cameraId key and track the user who updated them.
This commit is contained in:
17
server.js
17
server.js
@@ -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 });
|
||||||
|
|||||||
Reference in New Issue
Block a user