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 DEFAULT_HOME_DIRS = ['Downloads', 'Documents', 'Music', 'Video', 'Pictures', 'Onboarding'];
|
||||||
const OLD_CACHE_DIRS = ['ocr', 'tts', 'transcriptions', 'audio', 'video'];
|
const OLD_CACHE_DIRS = ['ocr', 'tts', 'transcriptions', 'audio', 'video'];
|
||||||
const ONBOARDING_SEED = join(DATA_PATH, 'Onboarding');
|
const ONBOARDING_SEED = join(DATA_PATH, 'Onboarding');
|
||||||
|
const ONBOARDING_ADMIN_SEED = join(DATA_PATH, 'Onboarding_Admin');
|
||||||
|
|
||||||
async function cleanOldCacheDirs(userDataDir: string) {
|
async function cleanOldCacheDirs(userDataDir: string) {
|
||||||
for (const dir of OLD_CACHE_DIRS) {
|
for (const dir of OLD_CACHE_DIRS) {
|
||||||
@@ -28,26 +29,29 @@ async function cleanOldCacheDirs(userDataDir: string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function syncOnboarding(homeDir: string) {
|
async function syncSeedDir(seedDir: string, targetDir: string) {
|
||||||
const target = join(homeDir, 'Onboarding');
|
if (!existsSync(seedDir)) return;
|
||||||
if (!existsSync(ONBOARDING_SEED)) 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(seedDir, { withFileTypes: true });
|
||||||
const seedEntries = await readdir(ONBOARDING_SEED, { withFileTypes: true });
|
|
||||||
for (const entry of seedEntries) {
|
for (const entry of seedEntries) {
|
||||||
const dest = join(target, entry.name);
|
const dest = join(targetDir, entry.name);
|
||||||
if (existsSync(dest)) continue;
|
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) {
|
for (const dir of DEFAULT_HOME_DIRS) {
|
||||||
const target = join(homeDir, dir);
|
const target = join(homeDir, dir);
|
||||||
if (dir === 'Onboarding') {
|
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)) {
|
} else if (!existsSync(target)) {
|
||||||
await mkdir(target, { recursive: true });
|
await mkdir(target, { recursive: true });
|
||||||
}
|
}
|
||||||
@@ -86,7 +90,7 @@ router.get('/ls', async (ctx) => {
|
|||||||
|
|
||||||
// Auto-create dir if missing (only for user home root)
|
// Auto-create dir if missing (only for user home root)
|
||||||
if (!ctx.req.query('root') || ctx.req.query('root') === 'home') {
|
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 });
|
await mkdir(absPath, { recursive: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user