@jmruthers/pace-core 0.5.178 → 0.5.179

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/dist/{chunk-GOL4XSJU.js → chunk-PJEVDATQ.js} +31 -3
  2. package/dist/chunk-PJEVDATQ.js.map +1 -0
  3. package/dist/components.js +1 -1
  4. package/dist/index.js +1 -1
  5. package/docs/api/classes/ColumnFactory.md +1 -1
  6. package/docs/api/classes/ErrorBoundary.md +1 -1
  7. package/docs/api/classes/InvalidScopeError.md +1 -1
  8. package/docs/api/classes/MissingUserContextError.md +1 -1
  9. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  10. package/docs/api/classes/PermissionDeniedError.md +1 -1
  11. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  12. package/docs/api/classes/RBACAuditManager.md +1 -1
  13. package/docs/api/classes/RBACCache.md +1 -1
  14. package/docs/api/classes/RBACEngine.md +1 -1
  15. package/docs/api/classes/RBACError.md +1 -1
  16. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  17. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  18. package/docs/api/classes/StorageUtils.md +1 -1
  19. package/docs/api/enums/FileCategory.md +1 -1
  20. package/docs/api/interfaces/AggregateConfig.md +1 -1
  21. package/docs/api/interfaces/BadgeProps.md +1 -1
  22. package/docs/api/interfaces/ButtonProps.md +1 -1
  23. package/docs/api/interfaces/CalendarProps.md +1 -1
  24. package/docs/api/interfaces/CardProps.md +1 -1
  25. package/docs/api/interfaces/ColorPalette.md +1 -1
  26. package/docs/api/interfaces/ColorShade.md +1 -1
  27. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  28. package/docs/api/interfaces/DataRecord.md +1 -1
  29. package/docs/api/interfaces/DataTableAction.md +1 -1
  30. package/docs/api/interfaces/DataTableColumn.md +1 -1
  31. package/docs/api/interfaces/DataTableProps.md +1 -1
  32. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  33. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  34. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  35. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  36. package/docs/api/interfaces/EventLogoProps.md +1 -1
  37. package/docs/api/interfaces/ExportColumn.md +1 -1
  38. package/docs/api/interfaces/ExportOptions.md +1 -1
  39. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  40. package/docs/api/interfaces/FileMetadata.md +1 -1
  41. package/docs/api/interfaces/FileReference.md +1 -1
  42. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  43. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  44. package/docs/api/interfaces/FileUploadProps.md +1 -1
  45. package/docs/api/interfaces/FooterProps.md +1 -1
  46. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  47. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  48. package/docs/api/interfaces/InputProps.md +1 -1
  49. package/docs/api/interfaces/LabelProps.md +1 -1
  50. package/docs/api/interfaces/LoginFormProps.md +1 -1
  51. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  52. package/docs/api/interfaces/NavigationContextType.md +1 -1
  53. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  54. package/docs/api/interfaces/NavigationItem.md +1 -1
  55. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  56. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  57. package/docs/api/interfaces/Organisation.md +1 -1
  58. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  59. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  60. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  61. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  62. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  63. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  64. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  65. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  66. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  67. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  68. package/docs/api/interfaces/PaletteData.md +1 -1
  69. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  70. package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
  71. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  72. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  73. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  74. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  75. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  76. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  77. package/docs/api/interfaces/RBACConfig.md +1 -1
  78. package/docs/api/interfaces/RBACLogger.md +1 -1
  79. package/docs/api/interfaces/ResourcePermissions.md +1 -1
  80. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  81. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  82. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  83. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  84. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  85. package/docs/api/interfaces/RouteConfig.md +1 -1
  86. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  87. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  88. package/docs/api/interfaces/SessionRestorationLoaderProps.md +1 -1
  89. package/docs/api/interfaces/StorageConfig.md +1 -1
  90. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  91. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  92. package/docs/api/interfaces/StorageListOptions.md +1 -1
  93. package/docs/api/interfaces/StorageListResult.md +1 -1
  94. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  95. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  96. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  97. package/docs/api/interfaces/StyleImport.md +1 -1
  98. package/docs/api/interfaces/SwitchProps.md +1 -1
  99. package/docs/api/interfaces/TabsContentProps.md +1 -1
  100. package/docs/api/interfaces/TabsListProps.md +1 -1
  101. package/docs/api/interfaces/TabsProps.md +1 -1
  102. package/docs/api/interfaces/TabsTriggerProps.md +1 -1
  103. package/docs/api/interfaces/TextareaProps.md +1 -1
  104. package/docs/api/interfaces/ToastActionElement.md +1 -1
  105. package/docs/api/interfaces/ToastProps.md +1 -1
  106. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  107. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  108. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  109. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  110. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  111. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  112. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +1 -1
  113. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
  114. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  115. package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
  116. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  117. package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
  118. package/docs/api/interfaces/UserEventAccess.md +1 -1
  119. package/docs/api/interfaces/UserMenuProps.md +1 -1
  120. package/docs/api/interfaces/UserProfile.md +1 -1
  121. package/docs/api/modules.md +2 -2
  122. package/package.json +1 -1
  123. package/src/components/PaceAppLayout/PaceAppLayout.tsx +41 -2
  124. package/src/rbac/hooks/useResourcePermissions.test.ts +26 -3
  125. package/dist/chunk-GOL4XSJU.js.map +0 -1
@@ -1745,7 +1745,7 @@ function PaceAppLayout({
1745
1745
  selectedEvent = eventsContext.selectedEvent;
1746
1746
  } catch (error) {
1747
1747
  }
1748
- const { resolvedScope } = useResolvedScope({
1748
+ const { resolvedScope, isLoading: scopeLoading } = useResolvedScope({
1749
1749
  supabase: supabase || null,
1750
1750
  selectedOrganisationId: selectedOrganisation?.id || null,
1751
1751
  selectedEventId: selectedEvent?.event_id || null
@@ -1857,6 +1857,12 @@ function PaceAppLayout({
1857
1857
  return;
1858
1858
  }
1859
1859
  const currentScope = scope;
1860
+ if (scopeLoading || !currentScope.appId) {
1861
+ if (isMounted) {
1862
+ setFilteredMenuItems(baseMenuItems);
1863
+ }
1864
+ return;
1865
+ }
1860
1866
  try {
1861
1867
  const { isSuperAdmin: isSuperAdmin2 } = await import("./api-45XYYO2A.js");
1862
1868
  const isSuper = await isSuperAdmin2(user.id);
@@ -1880,16 +1886,38 @@ function PaceAppLayout({
1880
1886
  }
1881
1887
  try {
1882
1888
  const { getPermissionMap } = await import("./api-45XYYO2A.js");
1889
+ logger.debug("PaceAppLayout", "Filtering navigation with scope", {
1890
+ organisationId: currentScope.organisationId,
1891
+ eventId: currentScope.eventId,
1892
+ appId: currentScope.appId,
1893
+ hasOrganisationId: !!currentScope.organisationId,
1894
+ hasEventId: !!currentScope.eventId,
1895
+ hasAppId: !!currentScope.appId
1896
+ });
1883
1897
  const permissionMap = await getPermissionMap({
1884
1898
  userId: user.id,
1885
1899
  scope: currentScope
1886
1900
  });
1901
+ logger.debug("PaceAppLayout", "Permission map received", {
1902
+ permissionCount: Object.keys(permissionMap).length,
1903
+ permissions: Object.keys(permissionMap),
1904
+ hasWildcard: permissionMap["*"] === true
1905
+ });
1887
1906
  const filtered = baseMenuItems.map((item) => {
1888
1907
  if (!item.href) return { item, hasAccess: true };
1889
1908
  const pageId = pageIdMapping[item.href] || item.href.slice(1) || "home";
1890
1909
  const permission = routePermissions[item.href] || defaultPermission;
1891
1910
  const fullPermission = permission.includes(":") ? permission : pageId ? `${permission}:page.${pageId}` : permission;
1892
1911
  const hasAccess = permissionMap["*"] === true || permissionMap[fullPermission] === true;
1912
+ logger.debug("PaceAppLayout", "Checking navigation item permission", {
1913
+ itemId: item.id,
1914
+ href: item.href,
1915
+ pageId,
1916
+ permission,
1917
+ fullPermission,
1918
+ hasAccess,
1919
+ permissionInMap: permissionMap[fullPermission]
1920
+ });
1893
1921
  return { item, hasAccess };
1894
1922
  });
1895
1923
  if (!isMounted) return;
@@ -1906,7 +1934,7 @@ function PaceAppLayout({
1906
1934
  return () => {
1907
1935
  isMounted = false;
1908
1936
  };
1909
- }, [baseMenuItems, filterNavigationByPermissions, pageIdMapping, routePermissions, defaultPermission, can, user?.id, scope]);
1937
+ }, [baseMenuItems, filterNavigationByPermissions, pageIdMapping, routePermissions, defaultPermission, can, user?.id, scope, scopeLoading]);
1910
1938
  useEffect3(() => {
1911
1939
  if (!roleBasedRouting || routeConfig.length === 0) return;
1912
1940
  let isMounted = true;
@@ -4582,4 +4610,4 @@ export {
4582
4610
  EventLogoCompact,
4583
4611
  EventLogoLarge
4584
4612
  };
4585
- //# sourceMappingURL=chunk-GOL4XSJU.js.map
4613
+ //# sourceMappingURL=chunk-PJEVDATQ.js.map