feat: enforce per-user module access in Makelore
This commit is contained in:
30
shared/module-access.ts
Normal file
30
shared/module-access.ts
Normal 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,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user