separate onboarding seed for super admin vs regular users
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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 });
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user