mirror of
https://github.com/shuaiplus/nodewarden.git
synced 2026-06-20 21:00:41 +00:00
f0ace28bf2
- Introduced `shared.ts` with utility functions for API interactions, including JSON parsing, error handling, and content disposition parsing. - Added `vault.ts` to manage vault-related operations such as folder and cipher management, including creation, deletion, and bulk operations. - Implemented encryption and decryption methods for secure data handling within the vault. - Created `backup-settings-repair.ts` to automatically repair backup settings for admin profiles if needed.
23 lines
1021 B
TypeScript
23 lines
1021 B
TypeScript
import { createAuthedFetch } from './api/auth';
|
|
import { getAdminBackupSettingsRepairState, repairAdminBackupSettings } from './api/backup';
|
|
import { decryptPortableBackupSettings } from './admin-backup-portable';
|
|
import type { Profile, SessionState } from './types';
|
|
|
|
export async function silentlyRepairBackupSettingsIfNeeded(
|
|
activeSession: SessionState,
|
|
activeProfile: Profile
|
|
): Promise<void> {
|
|
if (activeProfile.role !== 'admin') return;
|
|
if (!activeSession.accessToken || !activeSession.symEncKey || !activeSession.symMacKey) return;
|
|
|
|
const tempFetch = createAuthedFetch(() => activeSession, () => {});
|
|
try {
|
|
const state = await getAdminBackupSettingsRepairState(tempFetch);
|
|
if (!state.needsRepair || !state.portable) return;
|
|
const repairedSettings = await decryptPortableBackupSettings(state.portable, activeProfile, activeSession);
|
|
await repairAdminBackupSettings(tempFetch, repairedSettings);
|
|
} catch (error) {
|
|
console.error('Backup settings auto-repair failed:', error);
|
|
}
|
|
}
|