что то амт
This commit is contained in:
30
server.js
30
server.js
@@ -36,6 +36,7 @@ const {
|
||||
getBackupPath,
|
||||
listBackups,
|
||||
pruneBackups,
|
||||
restoreBackup,
|
||||
} = require('./src/services/backups');
|
||||
const {
|
||||
notifyError,
|
||||
@@ -136,10 +137,10 @@ async function runScheduledBackupIfNeeded() {
|
||||
|
||||
lastAutoBackupSlot = slot;
|
||||
appendAudit('backup.auto_created', 'system', {
|
||||
files: backup.files,
|
||||
filename: backup.filename,
|
||||
source: 'WEB',
|
||||
});
|
||||
notifyInfo('Scheduled backup completed', backup.files.map((file) => `${file.kind}: ${file.filename}`)).catch(() => {});
|
||||
notifyInfo('Scheduled backup completed', [backup.filename]).catch(() => {});
|
||||
}
|
||||
|
||||
function startBackupScheduler() {
|
||||
@@ -405,7 +406,7 @@ app.post('/api/backups', requireAuth, requirePermission(
|
||||
includeAppSnapshot: settings.backups.includeAppSnapshot,
|
||||
keepLast: settings.backups.keepLast,
|
||||
});
|
||||
appendAudit('backup.created', req.currentUser.username, { files: backup.files, source: getAuditSource(req) });
|
||||
appendAudit('backup.created', req.currentUser.username, { filename: backup.filename, source: getAuditSource(req) });
|
||||
res.json({ success: true, backup });
|
||||
} catch (err) {
|
||||
notifyError('Backup creation failed', err, { actor: req.currentUser.username }).catch(() => {});
|
||||
@@ -413,6 +414,29 @@ app.post('/api/backups', requireAuth, requirePermission(
|
||||
}
|
||||
});
|
||||
|
||||
app.post('/api/backups/:filename/restore', requireAuth, requirePermission(
|
||||
(permissions) => permissions.canManageUsers,
|
||||
'Backup access denied'
|
||||
), async (req, res) => {
|
||||
try {
|
||||
const result = await restoreBackup(req.params.filename, {
|
||||
restoreAppSnapshot: req.body?.restoreAppSnapshot !== false,
|
||||
});
|
||||
appendAudit('backup.restored', req.currentUser.username, {
|
||||
filename: req.params.filename,
|
||||
source: getAuditSource(req),
|
||||
});
|
||||
notifyInfo('Backup restored', [req.params.filename, `actor: ${req.currentUser.username}`]).catch(() => {});
|
||||
res.json({ success: true, result });
|
||||
} catch (err) {
|
||||
notifyError('Backup restore failed', err, {
|
||||
actor: req.currentUser.username,
|
||||
filename: req.params.filename,
|
||||
}).catch(() => {});
|
||||
res.status(500).json({ success: false, error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/api/settings', requireAuth, requirePermission(
|
||||
(permissions) => permissions.canManageUsers,
|
||||
'Settings access denied'
|
||||
|
||||
Reference in New Issue
Block a user