feat: enforce per-user module access in Makelore

This commit is contained in:
2026-08-17 08:51:15 +08:00
parent f7171a471a
commit d16922f18c
12 changed files with 457 additions and 35 deletions

30
shared/module-access.ts Normal file
View File

@@ -0,0 +1,30 @@
export const MODULE_ACCESS_KEYS = [
'programming',
'design',
'learning',
'robot',
] as const;
export type ModuleAccessKey = typeof MODULE_ACCESS_KEYS[number];
export type ModuleAccess = Record<ModuleAccessKey, boolean>;
export const DEFAULT_MODULE_ACCESS: ModuleAccess = {
programming: true,
design: true,
learning: true,
robot: true,
};
export function normalizeModuleAccess(value: unknown): ModuleAccess {
const record = value && typeof value === 'object' && !Array.isArray(value)
? value as Record<string, unknown>
: {};
return {
programming: typeof record.programming === 'boolean' ? record.programming : true,
design: typeof record.design === 'boolean' ? record.design : true,
learning: typeof record.learning === 'boolean' ? record.learning : true,
robot: typeof record.robot === 'boolean' ? record.robot : true,
};
}