separate onboarding seed for super admin vs regular users

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-04 19:26:42 +00:00
co-authored by Claude Opus 4.6
parent d33c7653d4
commit 6897e4e861
+15 -11
View File
@@ -20,6 +20,7 @@ async function getUserTtsVoice(userId: number): Promise<string | null> {
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 });
}