export type UserScopePayload = { all_projects: boolean; project_ids: number[]; warehouse_central: boolean; warehouse_projects: boolean; }; export function useScope() { const scope = useState("user-scope", () => null); const loaded = useState("user-scope-loaded", () => false); const { api } = useApi(); async function load() { try { scope.value = await api("/v1/me/scope"); loaded.value = true; } catch { scope.value = { all_projects: false, project_ids: [], warehouse_central: false, warehouse_projects: false, }; loaded.value = true; } } function canAccessProject(projectId: number): boolean { if (!scope.value) return true; if (scope.value.all_projects) return true; return scope.value.project_ids.includes(projectId); } return { scope, loaded, load, canAccessProject }; }