@jmruthers/pace-core 0.5.177 → 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-2W3CH222.js → chunk-PJEVDATQ.js} +34 -10
  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 +46 -10
  124. package/src/rbac/hooks/useResourcePermissions.test.ts +26 -3
  125. package/dist/chunk-2W3CH222.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
@@ -1856,11 +1856,13 @@ function PaceAppLayout({
1856
1856
  }
1857
1857
  return;
1858
1858
  }
1859
- const scope2 = {
1860
- organisationId: user.user_metadata?.organisationId || user.app_metadata?.organisationId,
1861
- eventId: user.user_metadata?.eventId || user.app_metadata?.eventId,
1862
- appId: user.user_metadata?.appId || user.app_metadata?.appId
1863
- };
1859
+ const currentScope = scope;
1860
+ if (scopeLoading || !currentScope.appId) {
1861
+ if (isMounted) {
1862
+ setFilteredMenuItems(baseMenuItems);
1863
+ }
1864
+ return;
1865
+ }
1864
1866
  try {
1865
1867
  const { isSuperAdmin: isSuperAdmin2 } = await import("./api-45XYYO2A.js");
1866
1868
  const isSuper = await isSuperAdmin2(user.id);
@@ -1876,7 +1878,7 @@ function PaceAppLayout({
1876
1878
  throw error;
1877
1879
  }
1878
1880
  }
1879
- if (!scope2.organisationId) {
1881
+ if (!currentScope.organisationId) {
1880
1882
  if (isMounted) {
1881
1883
  setFilteredMenuItems(baseMenuItems);
1882
1884
  }
@@ -1884,9 +1886,22 @@ function PaceAppLayout({
1884
1886
  }
1885
1887
  try {
1886
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
+ });
1887
1897
  const permissionMap = await getPermissionMap({
1888
1898
  userId: user.id,
1889
- scope: scope2
1899
+ scope: currentScope
1900
+ });
1901
+ logger.debug("PaceAppLayout", "Permission map received", {
1902
+ permissionCount: Object.keys(permissionMap).length,
1903
+ permissions: Object.keys(permissionMap),
1904
+ hasWildcard: permissionMap["*"] === true
1890
1905
  });
1891
1906
  const filtered = baseMenuItems.map((item) => {
1892
1907
  if (!item.href) return { item, hasAccess: true };
@@ -1894,6 +1909,15 @@ function PaceAppLayout({
1894
1909
  const permission = routePermissions[item.href] || defaultPermission;
1895
1910
  const fullPermission = permission.includes(":") ? permission : pageId ? `${permission}:page.${pageId}` : permission;
1896
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
+ });
1897
1921
  return { item, hasAccess };
1898
1922
  });
1899
1923
  if (!isMounted) return;
@@ -1910,7 +1934,7 @@ function PaceAppLayout({
1910
1934
  return () => {
1911
1935
  isMounted = false;
1912
1936
  };
1913
- }, [baseMenuItems, filterNavigationByPermissions, pageIdMapping, routePermissions, defaultPermission, can, user?.id, user?.user_metadata, user?.app_metadata]);
1937
+ }, [baseMenuItems, filterNavigationByPermissions, pageIdMapping, routePermissions, defaultPermission, can, user?.id, scope, scopeLoading]);
1914
1938
  useEffect3(() => {
1915
1939
  if (!roleBasedRouting || routeConfig.length === 0) return;
1916
1940
  let isMounted = true;
@@ -4586,4 +4610,4 @@ export {
4586
4610
  EventLogoCompact,
4587
4611
  EventLogoLarge
4588
4612
  };
4589
- //# sourceMappingURL=chunk-2W3CH222.js.map
4613
+ //# sourceMappingURL=chunk-PJEVDATQ.js.map