From 6897e4e861921063fd89decd1a0ac92f003a406d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Wed, 4 Mar 2026 19:26:42 +0000 Subject: [PATCH] separate onboarding seed for super admin vs regular users Co-Authored-By: Claude Opus 4.6 --- src/servers/api/file-browser/router.ts | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/servers/api/file-browser/router.ts b/src/servers/api/file-browser/router.ts index d424209a..7a9420ee 100644 --- a/src/servers/api/file-browser/router.ts +++ b/src/servers/api/file-browser/router.ts @@ -20,6 +20,7 @@ async function getUserTtsVoice(userId: number): Promise { const DEFAULT_HOME_DIRS = ['Downloads', 'Documents', 'Music', 'Video', 'Pictures', 'Onboarding']; const OLD_CACHE_DIRS = ['ocr', 'tts', 'transcriptions', 'audio', 'video']; const ONBOARDING_SEED = join(DATA_PATH, 'Onboarding'); +const ONBOARDING_ADMIN_SEED = join(DATA_PATH, 'Onboarding_Admin'); async function cleanOldCacheDirs(userDataDir: string) { for (const dir of OLD_CACHE_DIRS) { @@ -28,26 +29,29 @@ async function cleanOldCacheDirs(userDataDir: string) { } } -async function syncOnboarding(homeDir: string) { - const target = join(homeDir, 'Onboarding'); - if (!existsSync(ONBOARDING_SEED)) return; +async function syncSeedDir(seedDir: string, targetDir: string) { + if (!existsSync(seedDir)) return; - await mkdir(target, { recursive: true }); + await mkdir(targetDir, { recursive: true }); - // Copy any files from seed that are missing in the user's dir - const seedEntries = await readdir(ONBOARDING_SEED, { withFileTypes: true }); + const seedEntries = await readdir(seedDir, { withFileTypes: true }); for (const entry of seedEntries) { - const dest = join(target, entry.name); + const dest = join(targetDir, entry.name); if (existsSync(dest)) continue; - await cp(join(ONBOARDING_SEED, entry.name), dest, { recursive: true }); + await cp(join(seedDir, entry.name), dest, { recursive: true }); } } -async function seedHomeDir(homeDir: string) { +async function seedHomeDir(homeDir: string, isSuperAdmin: boolean) { for (const dir of DEFAULT_HOME_DIRS) { const target = join(homeDir, dir); if (dir === 'Onboarding') { - await syncOnboarding(homeDir); + if (isSuperAdmin) { + await syncSeedDir(ONBOARDING_ADMIN_SEED, join(homeDir, 'Onboarding')); + await syncSeedDir(ONBOARDING_SEED, join(homeDir, 'Onboarding', 'User_Onboarding')); + } else { + await syncSeedDir(ONBOARDING_SEED, join(homeDir, 'Onboarding')); + } } else if (!existsSync(target)) { await mkdir(target, { recursive: true }); } @@ -86,7 +90,7 @@ router.get('/ls', async (ctx) => { // Auto-create dir if missing (only for user home root) if (!ctx.req.query('root') || ctx.req.query('root') === 'home') { - await seedHomeDir(rootDir); + await seedHomeDir(rootDir, user.role === 'Super Admin'); await mkdir(absPath, { recursive: true }); }