@jmruthers/pace-core 0.5.191 → 0.5.193

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 (293) hide show
  1. package/dist/{AuthService-CbP_utw2.d.ts → AuthService-DjnJHDtC.d.ts} +1 -0
  2. package/dist/{DataTable-WKRZD47S.js → DataTable-5FU7IESH.js} +7 -6
  3. package/dist/{PublicPageProvider-ULXC_u6U.d.ts → PublicPageProvider-C0Sm_e5k.d.ts} +3 -1
  4. package/dist/{UnifiedAuthProvider-BYA9qB-o.d.ts → UnifiedAuthProvider-185Ih4dj.d.ts} +2 -0
  5. package/dist/{UnifiedAuthProvider-FTSG5XH7.js → UnifiedAuthProvider-RGJTDE2C.js} +3 -3
  6. package/dist/{api-IHKALJZD.js → api-N774RPUA.js} +2 -2
  7. package/dist/chunk-6C4YBBJM 5.js +628 -0
  8. package/dist/chunk-7D4SUZUM.js 2.map +1 -0
  9. package/dist/{chunk-LOMZXPSN.js → chunk-7EQTDTTJ.js} +47 -74
  10. package/dist/chunk-7EQTDTTJ.js 2.map +1 -0
  11. package/dist/chunk-7EQTDTTJ.js.map +1 -0
  12. package/dist/{chunk-6LTQQAT6.js → chunk-7FLMSG37.js} +336 -137
  13. package/dist/chunk-7FLMSG37.js 2.map +1 -0
  14. package/dist/chunk-7FLMSG37.js.map +1 -0
  15. package/dist/{chunk-XNYQOL3Z.js → chunk-BC4IJKSL.js} +9 -18
  16. package/dist/chunk-BC4IJKSL.js.map +1 -0
  17. package/dist/{chunk-ULHIJK66.js → chunk-E3SPN4VZ 5.js } +146 -36
  18. package/dist/chunk-E3SPN4VZ.js +12917 -0
  19. package/dist/{chunk-ULHIJK66.js.map → chunk-E3SPN4VZ.js.map} +1 -1
  20. package/dist/chunk-E66EQZE6 5.js +37 -0
  21. package/dist/chunk-E66EQZE6.js 2.map +1 -0
  22. package/dist/{chunk-6TQDD426.js → chunk-HWIIPPNI.js} +40 -221
  23. package/dist/chunk-HWIIPPNI.js.map +1 -0
  24. package/dist/chunk-I7PSE6JW 5.js +191 -0
  25. package/dist/chunk-I7PSE6JW.js 2.map +1 -0
  26. package/dist/{chunk-OETXORNB.js → chunk-IIELH4DL.js} +211 -136
  27. package/dist/chunk-IIELH4DL.js.map +1 -0
  28. package/dist/{chunk-ROXMHMY2.js → chunk-KNC55RTG.js} +13 -3
  29. package/dist/{chunk-ROXMHMY2.js.map → chunk-KNC55RTG.js 5.map } +1 -1
  30. package/dist/chunk-KNC55RTG.js.map +1 -0
  31. package/dist/chunk-KQCRWDSA.js 5.map +1 -0
  32. package/dist/{chunk-XYXSXPUK.js → chunk-LFNCN2SP.js} +7 -6
  33. package/dist/chunk-LFNCN2SP.js 2.map +1 -0
  34. package/dist/chunk-LFNCN2SP.js.map +1 -0
  35. package/dist/chunk-LMC26NLJ 2.js +84 -0
  36. package/dist/{chunk-VKB2CO4Z.js → chunk-NOAYCWCX 5.js } +84 -87
  37. package/dist/chunk-NOAYCWCX.js +4993 -0
  38. package/dist/chunk-NOAYCWCX.js.map +1 -0
  39. package/dist/chunk-QWWZ5CAQ.js 3.map +1 -0
  40. package/dist/chunk-QXHPKYJV 3.js +113 -0
  41. package/dist/chunk-R77UEZ4E 3.js +68 -0
  42. package/dist/chunk-VBXEHIUJ.js 6.map +1 -0
  43. package/dist/{chunk-VRGWKHDB.js → chunk-XNXXZ43G.js} +77 -33
  44. package/dist/chunk-XNXXZ43G.js.map +1 -0
  45. package/dist/chunk-ZSAAAMVR 6.js +25 -0
  46. package/dist/components.d.ts +2 -2
  47. package/dist/components.js +7 -7
  48. package/dist/components.js 5.map +1 -0
  49. package/dist/hooks.js +8 -8
  50. package/dist/index.d.ts +5 -5
  51. package/dist/index.js +12 -14
  52. package/dist/index.js.map +1 -1
  53. package/dist/providers.d.ts +3 -3
  54. package/dist/providers.js +2 -2
  55. package/dist/rbac/index.d.ts +1 -19
  56. package/dist/rbac/index.js +7 -9
  57. package/dist/styles/index 2.js +12 -0
  58. package/dist/styles/index.js 5.map +1 -0
  59. package/dist/theming/runtime 5.js +19 -0
  60. package/dist/theming/runtime.js 5.map +1 -0
  61. package/dist/utils.js +1 -1
  62. package/docs/api/classes/ColumnFactory.md +1 -1
  63. package/docs/api/classes/ErrorBoundary.md +1 -1
  64. package/docs/api/classes/InvalidScopeError.md +1 -1
  65. package/docs/api/classes/Logger.md +1 -1
  66. package/docs/api/classes/MissingUserContextError.md +1 -1
  67. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  68. package/docs/api/classes/PermissionDeniedError.md +2 -2
  69. package/docs/api/classes/RBACAuditManager.md +2 -2
  70. package/docs/api/classes/RBACCache.md +1 -1
  71. package/docs/api/classes/RBACEngine.md +2 -2
  72. package/docs/api/classes/RBACError.md +1 -1
  73. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  74. package/docs/api/classes/SecureSupabaseClient.md +10 -10
  75. package/docs/api/classes/StorageUtils.md +1 -1
  76. package/docs/api/enums/FileCategory.md +1 -1
  77. package/docs/api/enums/LogLevel.md +1 -1
  78. package/docs/api/enums/RBACErrorCode.md +1 -1
  79. package/docs/api/enums/RPCFunction.md +1 -1
  80. package/docs/api/interfaces/AddressFieldProps.md +1 -1
  81. package/docs/api/interfaces/AddressFieldRef.md +1 -1
  82. package/docs/api/interfaces/AggregateConfig.md +1 -1
  83. package/docs/api/interfaces/AutocompleteOptions.md +1 -1
  84. package/docs/api/interfaces/AvatarProps.md +1 -1
  85. package/docs/api/interfaces/BadgeProps.md +1 -1
  86. package/docs/api/interfaces/ButtonProps.md +1 -1
  87. package/docs/api/interfaces/CalendarProps.md +1 -1
  88. package/docs/api/interfaces/CardProps.md +1 -1
  89. package/docs/api/interfaces/ColorPalette.md +1 -1
  90. package/docs/api/interfaces/ColorShade.md +1 -1
  91. package/docs/api/interfaces/ComplianceResult.md +1 -1
  92. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  93. package/docs/api/interfaces/DataRecord.md +1 -1
  94. package/docs/api/interfaces/DataTableAction.md +1 -1
  95. package/docs/api/interfaces/DataTableColumn.md +1 -1
  96. package/docs/api/interfaces/DataTableProps.md +1 -1
  97. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  98. package/docs/api/interfaces/DatabaseComplianceResult.md +1 -1
  99. package/docs/api/interfaces/DatabaseIssue.md +1 -1
  100. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  101. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  102. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  103. package/docs/api/interfaces/ExportColumn.md +1 -1
  104. package/docs/api/interfaces/ExportOptions.md +1 -1
  105. package/docs/api/interfaces/FileDisplayProps.md +24 -11
  106. package/docs/api/interfaces/FileMetadata.md +1 -1
  107. package/docs/api/interfaces/FileReference.md +1 -1
  108. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  109. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  110. package/docs/api/interfaces/FileUploadProps.md +1 -1
  111. package/docs/api/interfaces/FooterProps.md +1 -1
  112. package/docs/api/interfaces/FormFieldProps.md +1 -1
  113. package/docs/api/interfaces/FormProps.md +1 -1
  114. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  115. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  116. package/docs/api/interfaces/InputProps.md +1 -1
  117. package/docs/api/interfaces/LabelProps.md +1 -1
  118. package/docs/api/interfaces/LoggerConfig.md +1 -1
  119. package/docs/api/interfaces/LoginFormProps.md +1 -1
  120. package/docs/api/interfaces/NavigationAccessRecord.md +2 -2
  121. package/docs/api/interfaces/NavigationContextType.md +1 -1
  122. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  123. package/docs/api/interfaces/NavigationItem.md +1 -1
  124. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  125. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  126. package/docs/api/interfaces/Organisation.md +1 -1
  127. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  128. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  129. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  130. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  131. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  132. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  133. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  134. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  135. package/docs/api/interfaces/PagePermissionGuardProps.md +2 -2
  136. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  137. package/docs/api/interfaces/PaletteData.md +1 -1
  138. package/docs/api/interfaces/ParsedAddress.md +1 -1
  139. package/docs/api/interfaces/PermissionEnforcerProps.md +4 -4
  140. package/docs/api/interfaces/ProgressProps.md +1 -1
  141. package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
  142. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  143. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  144. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  145. package/docs/api/interfaces/QuickFix.md +1 -1
  146. package/docs/api/interfaces/RBACAccessValidateParams.md +1 -1
  147. package/docs/api/interfaces/RBACAccessValidateResult.md +1 -1
  148. package/docs/api/interfaces/RBACAuditLogParams.md +1 -1
  149. package/docs/api/interfaces/RBACAuditLogResult.md +1 -1
  150. package/docs/api/interfaces/RBACConfig.md +2 -2
  151. package/docs/api/interfaces/RBACContext.md +1 -1
  152. package/docs/api/interfaces/RBACLogger.md +1 -1
  153. package/docs/api/interfaces/RBACPageAccessCheckParams.md +1 -1
  154. package/docs/api/interfaces/RBACPerformanceMetrics.md +1 -1
  155. package/docs/api/interfaces/RBACPermissionCheckParams.md +1 -1
  156. package/docs/api/interfaces/RBACPermissionCheckResult.md +2 -2
  157. package/docs/api/interfaces/RBACPermissionsGetParams.md +1 -1
  158. package/docs/api/interfaces/RBACPermissionsGetResult.md +1 -1
  159. package/docs/api/interfaces/RBACResult.md +1 -1
  160. package/docs/api/interfaces/RBACRoleGrantParams.md +2 -2
  161. package/docs/api/interfaces/RBACRoleGrantResult.md +1 -1
  162. package/docs/api/interfaces/RBACRoleRevokeParams.md +2 -2
  163. package/docs/api/interfaces/RBACRoleRevokeResult.md +1 -1
  164. package/docs/api/interfaces/RBACRoleValidateParams.md +2 -2
  165. package/docs/api/interfaces/RBACRoleValidateResult.md +1 -1
  166. package/docs/api/interfaces/RBACRolesListParams.md +1 -1
  167. package/docs/api/interfaces/RBACRolesListResult.md +2 -2
  168. package/docs/api/interfaces/RBACSessionTrackParams.md +1 -1
  169. package/docs/api/interfaces/RBACSessionTrackResult.md +1 -1
  170. package/docs/api/interfaces/ResourcePermissions.md +1 -1
  171. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  172. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  173. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  174. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  175. package/docs/api/interfaces/RouteAccessRecord.md +2 -2
  176. package/docs/api/interfaces/RouteConfig.md +2 -2
  177. package/docs/api/interfaces/RuntimeComplianceResult.md +1 -1
  178. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  179. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  180. package/docs/api/interfaces/SessionRestorationLoaderProps.md +1 -1
  181. package/docs/api/interfaces/SetupIssue.md +1 -1
  182. package/docs/api/interfaces/StorageConfig.md +1 -1
  183. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  184. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  185. package/docs/api/interfaces/StorageListOptions.md +1 -1
  186. package/docs/api/interfaces/StorageListResult.md +1 -1
  187. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  188. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  189. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  190. package/docs/api/interfaces/StyleImport.md +1 -1
  191. package/docs/api/interfaces/SwitchProps.md +1 -1
  192. package/docs/api/interfaces/TabsContentProps.md +1 -1
  193. package/docs/api/interfaces/TabsListProps.md +1 -1
  194. package/docs/api/interfaces/TabsProps.md +1 -1
  195. package/docs/api/interfaces/TabsTriggerProps.md +1 -1
  196. package/docs/api/interfaces/TextareaProps.md +1 -1
  197. package/docs/api/interfaces/ToastActionElement.md +1 -1
  198. package/docs/api/interfaces/ToastProps.md +1 -1
  199. package/docs/api/interfaces/UnifiedAuthContextType.md +60 -38
  200. package/docs/api/interfaces/UnifiedAuthProviderProps.md +13 -13
  201. package/docs/api/interfaces/UseFormDialogOptions.md +1 -1
  202. package/docs/api/interfaces/UseFormDialogReturn.md +1 -1
  203. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  204. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  205. package/docs/api/interfaces/UsePublicEventLogoOptions.md +2 -2
  206. package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
  207. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  208. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  209. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +2 -2
  210. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
  211. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  212. package/docs/api/interfaces/UseResolvedScopeOptions.md +2 -2
  213. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  214. package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
  215. package/docs/api/interfaces/UserEventAccess.md +1 -1
  216. package/docs/api/interfaces/UserMenuProps.md +1 -1
  217. package/docs/api/interfaces/UserProfile.md +1 -1
  218. package/docs/api/modules.md +194 -209
  219. package/docs/migration/database-changes-december-2025.md +2 -1
  220. package/docs/rbac/event-based-apps.md +124 -6
  221. package/package.json +1 -1
  222. package/scripts/check-pace-core-compliance.cjs +292 -57
  223. package/src/__tests__/rls-policies.test.ts +3 -1
  224. package/src/components/DataTable/__tests__/DataTable.default-state.test.tsx +172 -45
  225. package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +121 -28
  226. package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +9 -8
  227. package/src/components/DataTable/__tests__/DataTableCore.test.tsx +20 -52
  228. package/src/components/DataTable/__tests__/a11y.basic.test.tsx +170 -34
  229. package/src/components/DataTable/__tests__/keyboard.test.tsx +75 -12
  230. package/src/components/DataTable/__tests__/pagination.modes.test.tsx +75 -11
  231. package/src/components/DataTable/components/UnifiedTableBody.tsx +85 -14
  232. package/src/components/DataTable/hooks/useDataTablePermissions.ts +75 -10
  233. package/src/components/FileDisplay/FileDisplay.test.tsx +2 -1
  234. package/src/components/FileDisplay/FileDisplay.tsx +16 -4
  235. package/src/components/NavigationMenu/NavigationMenu.test.tsx +6 -4
  236. package/src/components/NavigationMenu/NavigationMenu.tsx +1 -10
  237. package/src/components/OrganisationSelector/OrganisationSelector.tsx +0 -1
  238. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +25 -2
  239. package/src/components/PaceAppLayout/PaceAppLayout.tsx +97 -68
  240. package/src/components/PaceLoginPage/PaceLoginPage.tsx +0 -7
  241. package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +5 -9
  242. package/src/components/ProtectedRoute/ProtectedRoute.tsx +0 -1
  243. package/src/components/PublicLayout/PublicPageProvider.tsx +0 -1
  244. package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +14 -7
  245. package/src/hooks/services/useAuthService.ts +21 -3
  246. package/src/hooks/services/useEventService.ts +21 -3
  247. package/src/hooks/services/useInactivityService.ts +21 -3
  248. package/src/hooks/services/useOrganisationService.ts +21 -3
  249. package/src/hooks/useFileDisplay.ts +10 -17
  250. package/src/hooks/useSecureDataAccess.test.ts +16 -9
  251. package/src/hooks/useSecureDataAccess.ts +3 -2
  252. package/src/providers/services/EventServiceProvider.tsx +0 -8
  253. package/src/providers/services/UnifiedAuthProvider.tsx +174 -24
  254. package/src/rbac/__tests__/adapters.comprehensive.test.tsx +10 -16
  255. package/src/rbac/__tests__/isSuperAdmin.real.test.ts +82 -0
  256. package/src/rbac/adapters.tsx +3 -22
  257. package/src/rbac/api.test.ts +2 -2
  258. package/src/rbac/api.ts +7 -1
  259. package/src/rbac/components/EnhancedNavigationMenu.tsx +2 -15
  260. package/src/rbac/components/NavigationGuard.tsx +1 -10
  261. package/src/rbac/components/NavigationProvider.tsx +0 -1
  262. package/src/rbac/components/PermissionEnforcer.tsx +45 -12
  263. package/src/rbac/components/SecureDataProvider.tsx +0 -1
  264. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +7 -43
  265. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +4 -11
  266. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +3 -3
  267. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +1 -1
  268. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +1 -1
  269. package/src/rbac/engine.ts +14 -2
  270. package/src/rbac/hooks/index.ts +0 -3
  271. package/src/rbac/hooks/usePermissions.ts +51 -11
  272. package/src/rbac/hooks/useRBAC.ts +3 -13
  273. package/src/rbac/hooks/useResolvedScope.test.ts +75 -54
  274. package/src/rbac/hooks/useResolvedScope.ts +58 -33
  275. package/src/rbac/hooks/useSecureSupabase.ts +4 -9
  276. package/src/rbac/secureClient.ts +31 -0
  277. package/src/services/EventService.ts +4 -57
  278. package/src/services/InactivityService.ts +127 -34
  279. package/src/services/OrganisationService.ts +68 -10
  280. package/dist/chunk-6LTQQAT6.js.map +0 -1
  281. package/dist/chunk-6TQDD426.js.map +0 -1
  282. package/dist/chunk-LOMZXPSN.js.map +0 -1
  283. package/dist/chunk-OETXORNB.js.map +0 -1
  284. package/dist/chunk-VKB2CO4Z.js.map +0 -1
  285. package/dist/chunk-VRGWKHDB.js.map +0 -1
  286. package/dist/chunk-XNYQOL3Z.js.map +0 -1
  287. package/dist/chunk-XYXSXPUK.js.map +0 -1
  288. package/scripts/check-pace-core-compliance.js +0 -512
  289. package/src/rbac/hooks/useSuperAdminBypass.ts +0 -126
  290. package/src/utils/context/superAdminOverride.ts +0 -58
  291. /package/dist/{DataTable-WKRZD47S.js.map → DataTable-5FU7IESH.js.map} +0 -0
  292. /package/dist/{UnifiedAuthProvider-FTSG5XH7.js.map → UnifiedAuthProvider-RGJTDE2C.js.map} +0 -0
  293. /package/dist/{api-IHKALJZD.js.map → api-N774RPUA.js.map} +0 -0
@@ -3,23 +3,23 @@ import {
3
3
  useAccessLevel,
4
4
  useCan,
5
5
  useMultiplePermissions
6
- } from "./chunk-VRGWKHDB.js";
6
+ } from "./chunk-XNXXZ43G.js";
7
7
  import {
8
8
  useSecureDataAccess
9
- } from "./chunk-XYXSXPUK.js";
9
+ } from "./chunk-LFNCN2SP.js";
10
10
  import {
11
11
  useResolvedScope
12
- } from "./chunk-OETXORNB.js";
12
+ } from "./chunk-IIELH4DL.js";
13
13
  import {
14
14
  useUnifiedAuth
15
- } from "./chunk-6LTQQAT6.js";
15
+ } from "./chunk-7FLMSG37.js";
16
16
  import {
17
17
  RBACCache,
18
18
  RBACNotInitializedError,
19
19
  getRBACConfig,
20
20
  getRBACLogger,
21
21
  rbacCache
22
- } from "./chunk-ROXMHMY2.js";
22
+ } from "./chunk-KNC55RTG.js";
23
23
  import {
24
24
  createLogger,
25
25
  logger
@@ -435,7 +435,6 @@ function SecureDataProvider({
435
435
  useEffect3(() => {
436
436
  if (enforceRLS && auditLog) {
437
437
  const logger2 = getRBACLogger();
438
- logger2.debug("RLS enforcement enabled - all queries will include organisation context");
439
438
  }
440
439
  }, [enforceRLS, auditLog]);
441
440
  return /* @__PURE__ */ jsx3(SecureDataContext.Provider, { value: contextValue, children });
@@ -449,7 +448,7 @@ function useSecureData() {
449
448
  }
450
449
 
451
450
  // src/rbac/components/PermissionEnforcer.tsx
452
- import { useMemo as useMemo4, useEffect as useEffect4, useState as useState4 } from "react";
451
+ import { useMemo as useMemo4, useEffect as useEffect4, useState as useState4, useRef as useRef2 } from "react";
453
452
  import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
454
453
  var log2 = createLogger("PermissionEnforcer");
455
454
  function PermissionEnforcer({
@@ -471,7 +470,23 @@ function PermissionEnforcer({
471
470
  selectedOrganisationId: selectedOrganisation?.id || null,
472
471
  selectedEventId: selectedEvent?.event_id || null
473
472
  });
474
- const effectiveScope = scope || resolvedScope;
473
+ const scopeToUse = scope || resolvedScope;
474
+ const scopeOrgId = scopeToUse?.organisationId || "";
475
+ const scopeEventId = scopeToUse?.eventId || void 0;
476
+ const scopeAppId = scopeToUse?.appId || void 0;
477
+ const effectiveScope = useMemo4(() => {
478
+ const newScope = {};
479
+ if (scopeOrgId) {
480
+ newScope.organisationId = scopeOrgId;
481
+ }
482
+ if (scopeEventId) {
483
+ newScope.eventId = scopeEventId;
484
+ }
485
+ if (scopeAppId) {
486
+ newScope.appId = scopeAppId;
487
+ }
488
+ return newScope;
489
+ }, [scopeOrgId, scopeEventId, scopeAppId]);
475
490
  const checkError = scopeError;
476
491
  const { results: permissionResults, isLoading: permissionsLoading, error: permissionsError } = useMultiplePermissions(
477
492
  user?.id || "",
@@ -503,19 +518,25 @@ function PermissionEnforcer({
503
518
  setHasChecked(true);
504
519
  }
505
520
  }, [hasRequiredPermissions, isLoading, error, permissions, operation, onDenied]);
521
+ const permissionsKey = permissions.join(",");
522
+ const lastLoggedKeyRef = useRef2(null);
506
523
  useEffect4(() => {
507
524
  if (auditLog && hasChecked && !isLoading) {
508
- log2.debug("Permission check attempt:", {
509
- permissions,
510
- operation,
511
- userId: user?.id,
512
- scope: effectiveScope,
513
- allowed: hasRequiredPermissions,
514
- requireAll,
515
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
516
- });
525
+ const logKey = `${operation}-${user?.id}-${permissionsKey}-${hasRequiredPermissions}-${scopeOrgId}-${scopeEventId}-${scopeAppId}`;
526
+ if (lastLoggedKeyRef.current !== logKey) {
527
+ lastLoggedKeyRef.current = logKey;
528
+ log2.debug("Permission check attempt:", {
529
+ permissions,
530
+ operation,
531
+ userId: user?.id,
532
+ scope: effectiveScope,
533
+ allowed: hasRequiredPermissions,
534
+ requireAll,
535
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
536
+ });
537
+ }
517
538
  }
518
- }, [auditLog, hasChecked, isLoading, permissions, operation, user?.id, effectiveScope, hasRequiredPermissions, requireAll]);
539
+ }, [auditLog, hasChecked, isLoading, permissionsKey, operation, user?.id, scopeOrgId, scopeEventId, scopeAppId, hasRequiredPermissions]);
519
540
  useEffect4(() => {
520
541
  if (strictMode && hasChecked && !isLoading && !hasRequiredPermissions) {
521
542
  const logger2 = getRBACLogger();
@@ -849,7 +870,6 @@ function NavigationProvider({
849
870
  useEffect6(() => {
850
871
  if (strictMode && auditLog) {
851
872
  const logger2 = getRBACLogger();
852
- logger2.debug("Strict mode enabled - all navigation access attempts will be logged and enforced");
853
873
  }
854
874
  }, [strictMode, auditLog]);
855
875
  return /* @__PURE__ */ jsx6(NavigationContext.Provider, { value: contextValue, children });
@@ -914,16 +934,6 @@ function NavigationGuard({
914
934
  }, [hasRequiredPermissions, isLoading, error, navigationItem, onDenied]);
915
935
  useEffect7(() => {
916
936
  if (auditLog && hasChecked && !isLoading) {
917
- const logger2 = getRBACLogger();
918
- logger2.debug("Navigation access attempt:", {
919
- navigationItem: navigationItem.id,
920
- permissions: navigationItem.permissions,
921
- userId: user?.id,
922
- scope: effectiveScope,
923
- allowed: hasRequiredPermissions,
924
- requireAll,
925
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
926
- });
927
937
  }
928
938
  }, [auditLog, hasChecked, isLoading, navigationItem, user?.id, effectiveScope, hasRequiredPermissions, requireAll]);
929
939
  useEffect7(() => {
@@ -1031,13 +1041,6 @@ function EnhancedNavigationMenu({
1031
1041
  onItemClick(item);
1032
1042
  }
1033
1043
  if (auditLog) {
1034
- const logger2 = getRBACLogger();
1035
- logger2.debug("Navigation item clicked:", {
1036
- item: item.id,
1037
- path: item.path,
1038
- permissions: item.permissions,
1039
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
1040
- });
1041
1044
  }
1042
1045
  setNavigationHistory((prev) => {
1043
1046
  const newHistory = [item, ...prev.filter((i) => i.id !== item.id)];
@@ -1089,18 +1092,10 @@ function EnhancedNavigationMenu({
1089
1092
  useEffect8(() => {
1090
1093
  if (strictMode && auditLog) {
1091
1094
  const logger2 = getRBACLogger();
1092
- logger2.debug("Strict mode enabled - all navigation access attempts will be logged and enforced");
1093
1095
  }
1094
1096
  }, [strictMode, auditLog]);
1095
1097
  useEffect8(() => {
1096
1098
  if (auditLog) {
1097
- const logger2 = getRBACLogger();
1098
- logger2.debug("Navigation menu initialized:", {
1099
- totalItems: items.length,
1100
- filteredItems: filteredItems.length,
1101
- strictMode,
1102
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
1103
- });
1104
1099
  }
1105
1100
  }, [items.length, filteredItems.length, strictMode, auditLog]);
1106
1101
  return /* @__PURE__ */ jsx8("nav", { className, children: filteredItems.map((item) => {
@@ -1151,26 +1146,11 @@ function PermissionGuard({
1151
1146
  if (error) {
1152
1147
  logger2.error("Permission check failed:", error);
1153
1148
  if (auditLog) {
1154
- logger2.info(`[PermissionGuard] Permission check failed:`, {
1155
- userId: effectiveUserId,
1156
- scope,
1157
- permission,
1158
- pageId,
1159
- error: error.message,
1160
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
1161
- });
1162
1149
  }
1163
1150
  return fallback;
1164
1151
  }
1165
1152
  if (!can) {
1166
1153
  if (auditLog) {
1167
- logger2.info(`[PermissionGuard] Permission denied:`, {
1168
- userId: effectiveUserId,
1169
- scope,
1170
- permission,
1171
- pageId,
1172
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
1173
- });
1174
1154
  }
1175
1155
  if (strictMode) {
1176
1156
  logger2.error(`[PermissionGuard] STRICT MODE VIOLATION: User attempted to access protected resource without permission`, {
@@ -1187,13 +1167,6 @@ function PermissionGuard({
1187
1167
  return /* @__PURE__ */ jsx9(Fragment4, { children: fallback });
1188
1168
  }
1189
1169
  if (auditLog) {
1190
- logger2.info(`[PermissionGuard] Permission granted:`, {
1191
- userId: effectiveUserId,
1192
- scope,
1193
- permission,
1194
- pageId,
1195
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
1196
- });
1197
1170
  }
1198
1171
  return /* @__PURE__ */ jsx9(Fragment4, { children });
1199
1172
  }
@@ -1247,7 +1220,7 @@ function withPermissionGuard(config, handler) {
1247
1220
  if (!userId || !organisationId) {
1248
1221
  throw new Error("User context required for permission check");
1249
1222
  }
1250
- const { isPermitted: isPermitted2 } = await import("./api-IHKALJZD.js");
1223
+ const { isPermitted: isPermitted2 } = await import("./api-N774RPUA.js");
1251
1224
  const hasPermission2 = await isPermitted2({
1252
1225
  userId,
1253
1226
  scope: { organisationId, eventId, appId },
@@ -1270,7 +1243,7 @@ function withAccessLevelGuard(minLevel, handler) {
1270
1243
  if (!userId || !organisationId) {
1271
1244
  throw new Error("User context required for access level check");
1272
1245
  }
1273
- const { getAccessLevel: getAccessLevel2 } = await import("./api-IHKALJZD.js");
1246
+ const { getAccessLevel: getAccessLevel2 } = await import("./api-N774RPUA.js");
1274
1247
  const accessLevel = await getAccessLevel2({
1275
1248
  userId,
1276
1249
  scope: { organisationId, eventId, appId }
@@ -1295,7 +1268,7 @@ function withRoleGuard(config, handler) {
1295
1268
  throw new Error("User context required for role check");
1296
1269
  }
1297
1270
  if (config.globalRoles && config.globalRoles.length > 0) {
1298
- const { isSuperAdmin } = await import("./api-IHKALJZD.js");
1271
+ const { isSuperAdmin } = await import("./api-N774RPUA.js");
1299
1272
  const isSuper = await isSuperAdmin(userId);
1300
1273
  if (isSuper) {
1301
1274
  if (organisationId) {
@@ -1321,14 +1294,14 @@ function withRoleGuard(config, handler) {
1321
1294
  }
1322
1295
  }
1323
1296
  if (config.organisationRoles && config.organisationRoles.length > 0) {
1324
- const { isOrganisationAdmin } = await import("./api-IHKALJZD.js");
1297
+ const { isOrganisationAdmin } = await import("./api-N774RPUA.js");
1325
1298
  const isOrgAdmin = await isOrganisationAdmin(userId, organisationId);
1326
1299
  if (!isOrgAdmin && config.requireAll !== false) {
1327
1300
  throw new Error(`Organisation admin role required`);
1328
1301
  }
1329
1302
  }
1330
1303
  if (config.eventAppRoles && config.eventAppRoles.length > 0 && eventId && appId) {
1331
- const { isEventAdmin } = await import("./api-IHKALJZD.js");
1304
+ const { isEventAdmin } = await import("./api-N774RPUA.js");
1332
1305
  const isEventAdminUser = await isEventAdmin(userId, { organisationId, eventId, appId });
1333
1306
  if (!isEventAdminUser && config.requireAll !== false) {
1334
1307
  throw new Error(`Event admin role required`);
@@ -1368,7 +1341,7 @@ function createRBACMiddleware(config) {
1368
1341
  );
1369
1342
  if (protectedRoute) {
1370
1343
  try {
1371
- const { isPermitted: isPermitted2 } = await import("./api-IHKALJZD.js");
1344
+ const { isPermitted: isPermitted2 } = await import("./api-N774RPUA.js");
1372
1345
  const hasPermission2 = await isPermitted2({
1373
1346
  userId,
1374
1347
  scope: { organisationId },
@@ -1395,7 +1368,7 @@ function createRBACExpressMiddleware(config) {
1395
1368
  return res.status(401).json({ error: "User context required" });
1396
1369
  }
1397
1370
  try {
1398
- const { isPermitted: isPermitted2 } = await import("./api-IHKALJZD.js");
1371
+ const { isPermitted: isPermitted2 } = await import("./api-N774RPUA.js");
1399
1372
  const hasPermission2 = await isPermitted2({
1400
1373
  userId,
1401
1374
  scope: { organisationId, eventId, appId },
@@ -1924,4 +1897,4 @@ export {
1924
1897
  getDirectSupabaseAuthFixes,
1925
1898
  getQuickFixes
1926
1899
  };
1927
- //# sourceMappingURL=chunk-LOMZXPSN.js.map
1900
+ //# sourceMappingURL=chunk-7EQTDTTJ.js.map