@jmruthers/pace-core 0.5.1 → 0.5.3

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 (206) hide show
  1. package/dist/{DataTable-GX3XERFJ.js → DataTable-ZQDRE46Q.js} +7 -6
  2. package/dist/{PublicLoadingSpinner-DztrzuJr.d.ts → PublicLoadingSpinner-Bq_-BeK-.d.ts} +1 -1
  3. package/dist/RBACProvider-BO4ilsQB.d.ts +63 -0
  4. package/dist/{UnifiedAuthProvider-w66zSCUf.d.ts → UnifiedAuthProvider-DGQsy-vY.d.ts} +2 -59
  5. package/dist/{api-ETQ6YJ3C.js → api-H5A3H4IR.js} +2 -2
  6. package/dist/{chunk-T3XIA4AJ.js → chunk-5H3C2SWM.js} +14 -16
  7. package/dist/chunk-5H3C2SWM.js.map +1 -0
  8. package/dist/chunk-5SIXIV7R.js +1925 -0
  9. package/dist/chunk-5SIXIV7R.js.map +1 -0
  10. package/dist/chunk-GNTALZV3.js +17 -0
  11. package/dist/chunk-GNTALZV3.js.map +1 -0
  12. package/dist/{chunk-C5G2A4PO.js → chunk-GWSBHC4J.js} +6 -6
  13. package/dist/{chunk-XJK2J4N6.js → chunk-HD7PYDUV.js} +4 -6
  14. package/dist/{chunk-XJK2J4N6.js.map → chunk-HD7PYDUV.js.map} +1 -1
  15. package/dist/{chunk-TGDCLPP2.js → chunk-HXX35Q2M.js} +6 -21
  16. package/dist/chunk-HXX35Q2M.js.map +1 -0
  17. package/dist/{chunk-5EL3KHOQ.js → chunk-K6B7BLSE.js} +2 -2
  18. package/dist/{chunk-GSNM5D6H.js → chunk-M4RW7PIP.js} +4 -4
  19. package/dist/{chunk-U6JDHVC2.js → chunk-PVMYVQSM.js} +6 -8
  20. package/dist/{chunk-U6JDHVC2.js.map → chunk-PVMYVQSM.js.map} +1 -1
  21. package/dist/{chunk-6CR3MRZN.js → chunk-QKHFMQ5R.js} +372 -11
  22. package/dist/{chunk-6CR3MRZN.js.map → chunk-QKHFMQ5R.js.map} +1 -1
  23. package/dist/chunk-QVYBYGT2.js +428 -0
  24. package/dist/chunk-QVYBYGT2.js.map +1 -0
  25. package/dist/{chunk-OEGRKULD.js → chunk-WJARTBCT.js} +56 -1
  26. package/dist/chunk-WJARTBCT.js.map +1 -0
  27. package/dist/components.d.ts +4 -3
  28. package/dist/components.js +16 -162
  29. package/dist/components.js.map +1 -1
  30. package/dist/hooks.d.ts +2 -2
  31. package/dist/hooks.js +7 -9
  32. package/dist/hooks.js.map +1 -1
  33. package/dist/index.d.ts +8 -6
  34. package/dist/index.js +152 -17
  35. package/dist/index.js.map +1 -1
  36. package/dist/providers.d.ts +3 -2
  37. package/dist/providers.js +6 -12
  38. package/dist/rbac/index.d.ts +167 -98
  39. package/dist/rbac/index.js +48 -1881
  40. package/dist/rbac/index.js.map +1 -1
  41. package/dist/styles/core.css +0 -58
  42. package/dist/types.d.ts +2 -2
  43. package/dist/{unified-CM7T0aTK.d.ts → unified-CMPjE_fv.d.ts} +1 -1
  44. package/dist/{usePublicRouteParams-B6i0KtXW.d.ts → usePublicRouteParams-B2OcAsur.d.ts} +1 -1
  45. package/dist/utils.js +12 -14
  46. package/dist/utils.js.map +1 -1
  47. package/docs/api/classes/ErrorBoundary.md +1 -1
  48. package/docs/api/classes/InvalidScopeError.md +73 -0
  49. package/docs/api/classes/MissingUserContextError.md +66 -0
  50. package/docs/api/classes/OrganisationContextRequiredError.md +66 -0
  51. package/docs/api/classes/PermissionDeniedError.md +73 -0
  52. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  53. package/docs/api/classes/RBACAuditManager.md +270 -0
  54. package/docs/api/classes/RBACCache.md +284 -0
  55. package/docs/api/classes/RBACEngine.md +141 -0
  56. package/docs/api/classes/RBACError.md +76 -0
  57. package/docs/api/classes/RBACNotInitializedError.md +66 -0
  58. package/docs/api/classes/SecureSupabaseClient.md +135 -0
  59. package/docs/api/interfaces/AggregateConfig.md +1 -1
  60. package/docs/api/interfaces/ButtonProps.md +1 -1
  61. package/docs/api/interfaces/CardProps.md +1 -1
  62. package/docs/api/interfaces/ColorPalette.md +1 -1
  63. package/docs/api/interfaces/ColorShade.md +1 -1
  64. package/docs/api/interfaces/DataAccessRecord.md +96 -0
  65. package/docs/api/interfaces/DataTableAction.md +1 -1
  66. package/docs/api/interfaces/DataTableColumn.md +1 -1
  67. package/docs/api/interfaces/DataTableProps.md +1 -1
  68. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  69. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  70. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +235 -0
  71. package/docs/api/interfaces/EventContextType.md +1 -1
  72. package/docs/api/interfaces/EventLogoProps.md +1 -1
  73. package/docs/api/interfaces/EventProviderProps.md +1 -1
  74. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  75. package/docs/api/interfaces/FileUploadProps.md +1 -1
  76. package/docs/api/interfaces/FooterProps.md +1 -1
  77. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  78. package/docs/api/interfaces/InputProps.md +1 -1
  79. package/docs/api/interfaces/LabelProps.md +1 -1
  80. package/docs/api/interfaces/LoginFormProps.md +1 -1
  81. package/docs/api/interfaces/NavigationAccessRecord.md +107 -0
  82. package/docs/api/interfaces/NavigationContextType.md +164 -0
  83. package/docs/api/interfaces/NavigationGuardProps.md +139 -0
  84. package/docs/api/interfaces/NavigationItem.md +1 -1
  85. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  86. package/docs/api/interfaces/NavigationProviderProps.md +117 -0
  87. package/docs/api/interfaces/Organisation.md +1 -1
  88. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  89. package/docs/api/interfaces/OrganisationMembership.md +2 -2
  90. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  91. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  92. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  93. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  94. package/docs/api/interfaces/PageAccessRecord.md +85 -0
  95. package/docs/api/interfaces/PagePermissionContextType.md +140 -0
  96. package/docs/api/interfaces/PagePermissionGuardProps.md +153 -0
  97. package/docs/api/interfaces/PagePermissionProviderProps.md +119 -0
  98. package/docs/api/interfaces/PaletteData.md +1 -1
  99. package/docs/api/interfaces/PermissionEnforcerProps.md +153 -0
  100. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  101. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  102. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  103. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  104. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  105. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  106. package/docs/api/interfaces/RBACConfig.md +99 -0
  107. package/docs/api/interfaces/RBACContextType.md +474 -0
  108. package/docs/api/interfaces/RBACLogger.md +112 -0
  109. package/docs/api/interfaces/RBACProviderProps.md +107 -0
  110. package/docs/api/interfaces/RoleBasedRouterContextType.md +151 -0
  111. package/docs/api/interfaces/RoleBasedRouterProps.md +156 -0
  112. package/docs/api/interfaces/RouteAccessRecord.md +107 -0
  113. package/docs/api/interfaces/RouteConfig.md +121 -0
  114. package/docs/api/interfaces/SecureDataContextType.md +168 -0
  115. package/docs/api/interfaces/SecureDataProviderProps.md +132 -0
  116. package/docs/api/interfaces/StorageConfig.md +1 -1
  117. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  118. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  119. package/docs/api/interfaces/StorageListOptions.md +1 -1
  120. package/docs/api/interfaces/StorageListResult.md +1 -1
  121. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  122. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  123. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  124. package/docs/api/interfaces/StyleImport.md +1 -1
  125. package/docs/api/interfaces/ToastActionElement.md +1 -1
  126. package/docs/api/interfaces/ToastProps.md +1 -1
  127. package/docs/api/interfaces/UnifiedAuthContextType.md +85 -85
  128. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  129. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  130. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  131. package/docs/api/interfaces/UsePublicEventLogoOptions.md +1 -1
  132. package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
  133. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  134. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  135. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  136. package/docs/api/interfaces/UserEventAccess.md +11 -11
  137. package/docs/api/interfaces/UserMenuProps.md +1 -1
  138. package/docs/api/interfaces/UserProfile.md +1 -1
  139. package/docs/api/modules.md +2244 -3
  140. package/docs/migration-guide.md +43 -18
  141. package/docs/styles/README.md +187 -98
  142. package/docs/usage.md +32 -7
  143. package/package.json +2 -2
  144. package/src/components/Footer/Footer.test.tsx +482 -0
  145. package/src/components/Form/Form.test.tsx +1158 -0
  146. package/src/components/Header/Header.test.tsx +582 -0
  147. package/src/components/Header/Header.tsx +1 -1
  148. package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +489 -0
  149. package/src/components/Input/Input.test.tsx +466 -0
  150. package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +450 -0
  151. package/src/components/LoginForm/LoginForm.test.tsx +816 -0
  152. package/src/components/NavigationMenu/NavigationMenu.test.tsx +883 -0
  153. package/src/components/OrganisationSelector/OrganisationSelector.test.tsx +748 -0
  154. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +891 -0
  155. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +475 -0
  156. package/src/components/PasswordReset/PasswordChangeForm.test.tsx +621 -0
  157. package/src/components/PasswordReset/PasswordResetForm.test.tsx +605 -0
  158. package/src/components/Select/Select.test.tsx +948 -0
  159. package/src/components/SuperAdminGuard.tsx +1 -1
  160. package/src/components/Toast/Toast.test.tsx +586 -0
  161. package/src/components/Tooltip/Tooltip.test.tsx +852 -0
  162. package/src/components/UserMenu/UserMenu.test.tsx +702 -0
  163. package/src/components/UserMenu/UserMenu.tsx +2 -2
  164. package/src/hooks/useDebounce.test.ts +375 -0
  165. package/src/hooks/useOrganisationPermissions.test.ts +528 -0
  166. package/src/hooks/useOrganisationSecurity.test.ts +734 -0
  167. package/src/hooks/usePermissionCache.test.ts +542 -0
  168. package/src/hooks/usePermissionCache.ts +1 -1
  169. package/src/index.ts +2 -3
  170. package/src/providers/UnifiedAuthProvider.tsx +2 -2
  171. package/src/providers/index.ts +3 -1
  172. package/src/rbac/__tests__/integration.test.tsx +218 -0
  173. package/src/rbac/api.test.ts +441 -0
  174. package/src/rbac/hooks/index.ts +21 -0
  175. package/src/rbac/hooks/useCan.test.ts +461 -0
  176. package/src/rbac/hooks/usePermissions.test.ts +359 -0
  177. package/src/rbac/hooks/usePermissions.ts +567 -0
  178. package/src/rbac/hooks/useRBAC.simple.test.ts +90 -0
  179. package/src/rbac/hooks/useRBAC.test.ts +503 -0
  180. package/src/{hooks → rbac/hooks}/useRBAC.ts +7 -7
  181. package/src/rbac/index.ts +5 -10
  182. package/src/{providers → rbac/providers}/RBACProvider.tsx +6 -6
  183. package/src/rbac/providers/__tests__/RBACProvider.test.tsx +687 -0
  184. package/src/rbac/providers/index.ts +11 -0
  185. package/src/styles/core.css +0 -58
  186. package/src/utils/formatDate.test.ts +241 -0
  187. package/dist/chunk-AUE24LVR.js +0 -268
  188. package/dist/chunk-AUE24LVR.js.map +0 -1
  189. package/dist/chunk-COBPIXXQ.js +0 -379
  190. package/dist/chunk-COBPIXXQ.js.map +0 -1
  191. package/dist/chunk-OEGRKULD.js.map +0 -1
  192. package/dist/chunk-OYRY44Q2.js +0 -62
  193. package/dist/chunk-OYRY44Q2.js.map +0 -1
  194. package/dist/chunk-T3XIA4AJ.js.map +0 -1
  195. package/dist/chunk-TGDCLPP2.js.map +0 -1
  196. package/src/components/RBAC/PagePermissionGuard.tsx +0 -287
  197. package/src/components/RBAC/RBACGuard.tsx +0 -143
  198. package/src/components/RBAC/RBACProvider.tsx +0 -186
  199. package/src/components/RBAC/RoleBasedContent.tsx +0 -129
  200. package/src/components/RBAC/index.ts +0 -23
  201. package/src/rbac/hooks.ts +0 -570
  202. /package/dist/{DataTable-GX3XERFJ.js.map → DataTable-ZQDRE46Q.js.map} +0 -0
  203. /package/dist/{api-ETQ6YJ3C.js.map → api-H5A3H4IR.js.map} +0 -0
  204. /package/dist/{chunk-C5G2A4PO.js.map → chunk-GWSBHC4J.js.map} +0 -0
  205. /package/dist/{chunk-5EL3KHOQ.js.map → chunk-K6B7BLSE.js.map} +0 -0
  206. /package/dist/{chunk-GSNM5D6H.js.map → chunk-M4RW7PIP.js.map} +0 -0
@@ -1,6 +1,6 @@
1
- [@jmruthers/pace-core - v0.5.1](README.md) / Exports
1
+ [@jmruthers/pace-core - v0.5.3](README.md) / Exports
2
2
 
3
- # @jmruthers/pace-core - v0.5.1
3
+ # @jmruthers/pace-core - v0.5.3
4
4
 
5
5
  **`File`**
6
6
 
@@ -33,6 +33,16 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
33
33
 
34
34
  - [ErrorBoundary](classes/ErrorBoundary.md)
35
35
  - [PublicErrorBoundary](classes/PublicErrorBoundary.md)
36
+ - [RBACAuditManager](classes/RBACAuditManager.md)
37
+ - [RBACCache](classes/RBACCache.md)
38
+ - [RBACEngine](classes/RBACEngine.md)
39
+ - [SecureSupabaseClient](classes/SecureSupabaseClient.md)
40
+ - [RBACError](classes/RBACError.md)
41
+ - [PermissionDeniedError](classes/PermissionDeniedError.md)
42
+ - [OrganisationContextRequiredError](classes/OrganisationContextRequiredError.md)
43
+ - [RBACNotInitializedError](classes/RBACNotInitializedError.md)
44
+ - [InvalidScopeError](classes/InvalidScopeError.md)
45
+ - [MissingUserContextError](classes/MissingUserContextError.md)
36
46
 
37
47
  ### Interfaces
38
48
 
@@ -73,9 +83,30 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
73
83
  - [UseInactivityTrackerReturn](interfaces/UseInactivityTrackerReturn.md)
74
84
  - [EventContextType](interfaces/EventContextType.md)
75
85
  - [EventProviderProps](interfaces/EventProviderProps.md)
76
- - [UserEventAccess](interfaces/UserEventAccess.md)
77
86
  - [UnifiedAuthContextType](interfaces/UnifiedAuthContextType.md)
78
87
  - [UnifiedAuthProviderProps](interfaces/UnifiedAuthProviderProps.md)
88
+ - [EnhancedNavigationMenuProps](interfaces/EnhancedNavigationMenuProps.md)
89
+ - [NavigationGuardProps](interfaces/NavigationGuardProps.md)
90
+ - [NavigationAccessRecord](interfaces/NavigationAccessRecord.md)
91
+ - [NavigationContextType](interfaces/NavigationContextType.md)
92
+ - [NavigationProviderProps](interfaces/NavigationProviderProps.md)
93
+ - [PagePermissionGuardProps](interfaces/PagePermissionGuardProps.md)
94
+ - [PagePermissionContextType](interfaces/PagePermissionContextType.md)
95
+ - [PageAccessRecord](interfaces/PageAccessRecord.md)
96
+ - [PagePermissionProviderProps](interfaces/PagePermissionProviderProps.md)
97
+ - [PermissionEnforcerProps](interfaces/PermissionEnforcerProps.md)
98
+ - [RouteConfig](interfaces/RouteConfig.md)
99
+ - [RouteAccessRecord](interfaces/RouteAccessRecord.md)
100
+ - [RoleBasedRouterContextType](interfaces/RoleBasedRouterContextType.md)
101
+ - [RoleBasedRouterProps](interfaces/RoleBasedRouterProps.md)
102
+ - [DataAccessRecord](interfaces/DataAccessRecord.md)
103
+ - [SecureDataContextType](interfaces/SecureDataContextType.md)
104
+ - [SecureDataProviderProps](interfaces/SecureDataProviderProps.md)
105
+ - [RBACConfig](interfaces/RBACConfig.md)
106
+ - [RBACLogger](interfaces/RBACLogger.md)
107
+ - [UserEventAccess](interfaces/UserEventAccess.md)
108
+ - [RBACContextType](interfaces/RBACContextType.md)
109
+ - [RBACProviderProps](interfaces/RBACProviderProps.md)
79
110
  - [StyleImport](interfaces/StyleImport.md)
80
111
  - [ColorShade](interfaces/ColorShade.md)
81
112
  - [ColorPalette](interfaces/ColorPalette.md)
@@ -100,9 +131,29 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
100
131
 
101
132
  - [DataRecord](modules.md#datarecord)
102
133
  - [GetRowId](modules.md#getrowid)
134
+ - [LogLevel](modules.md#loglevel)
135
+ - [AllPermissions](modules.md#allpermissions)
136
+ - [UUID](modules.md#uuid)
137
+ - [Operation](modules.md#operation)
138
+ - [Permission](modules.md#permission)
139
+ - [AccessLevel](modules.md#accesslevel)
140
+ - [Scope](modules.md#scope)
141
+ - [PermissionCheck](modules.md#permissioncheck)
142
+ - [PermissionMap](modules.md#permissionmap)
143
+ - [GlobalRole](modules.md#globalrole)
144
+ - [OrganisationRole](modules.md#organisationrole)
145
+ - [EventAppRole](modules.md#eventapprole)
103
146
 
104
147
  ### Variables
105
148
 
149
+ - [rbacCache](modules.md#rbaccache)
150
+ - [CACHE\_PATTERNS](modules.md#cache_patterns)
151
+ - [GLOBAL\_PERMISSIONS](modules.md#global_permissions)
152
+ - [ORGANISATION\_PERMISSIONS](modules.md#organisation_permissions)
153
+ - [EVENT\_APP\_PERMISSIONS](modules.md#event_app_permissions)
154
+ - [PAGE\_PERMISSIONS](modules.md#page_permissions)
155
+ - [PERMISSION\_GROUPS](modules.md#permission_groups)
156
+ - [ALL\_PERMISSIONS](modules.md#all_permissions)
106
157
  - [styleConfig](modules.md#styleconfig)
107
158
  - [FILE\_SIZE\_LIMITS](modules.md#file_size_limits)
108
159
  - [DEFAULT\_FILE\_SIZE\_LIMIT](modules.md#default_file_size_limit)
@@ -226,6 +277,59 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
226
277
  - [useOrganisations](modules.md#useorganisations)
227
278
  - [useUnifiedAuth](modules.md#useunifiedauth)
228
279
  - [UnifiedAuthProvider](modules.md#unifiedauthprovider)
280
+ - [PermissionGuard](modules.md#permissionguard)
281
+ - [AccessLevelGuard](modules.md#accesslevelguard)
282
+ - [withPermissionGuard](modules.md#withpermissionguard)
283
+ - [withAccessLevelGuard](modules.md#withaccesslevelguard)
284
+ - [withRoleGuard](modules.md#withroleguard)
285
+ - [createRBACMiddleware](modules.md#createrbacmiddleware)
286
+ - [createRBACExpressMiddleware](modules.md#createrbacexpressmiddleware)
287
+ - [hasPermissionCached](modules.md#haspermissioncached)
288
+ - [hasAnyPermissionCached](modules.md#hasanypermissioncached)
289
+ - [setupRBAC](modules.md#setuprbac)
290
+ - [getAccessLevel](modules.md#getaccesslevel)
291
+ - [getPermissionMap](modules.md#getpermissionmap)
292
+ - [isPermitted](modules.md#ispermitted)
293
+ - [isPermittedCached](modules.md#ispermittedcached)
294
+ - [hasPermission](modules.md#haspermission)
295
+ - [hasAnyPermission](modules.md#hasanypermission)
296
+ - [hasAllPermissions](modules.md#hasallpermissions)
297
+ - [createAuditManager](modules.md#createauditmanager)
298
+ - [setGlobalAuditManager](modules.md#setglobalauditmanager)
299
+ - [getGlobalAuditManager](modules.md#getglobalauditmanager)
300
+ - [emitAuditEvent](modules.md#emitauditevent)
301
+ - [EnhancedNavigationMenu](modules.md#enhancednavigationmenu)
302
+ - [NavigationGuard](modules.md#navigationguard)
303
+ - [NavigationProvider](modules.md#navigationprovider)
304
+ - [useNavigationPermissions](modules.md#usenavigationpermissions)
305
+ - [PagePermissionGuard](modules.md#pagepermissionguard)
306
+ - [PagePermissionProvider](modules.md#pagepermissionprovider)
307
+ - [usePagePermissions](modules.md#usepagepermissions)
308
+ - [PermissionEnforcer](modules.md#permissionenforcer)
309
+ - [RoleBasedRouter](modules.md#rolebasedrouter)
310
+ - [useRoleBasedRouter](modules.md#userolebasedrouter)
311
+ - [SecureDataProvider](modules.md#securedataprovider)
312
+ - [useSecureData](modules.md#usesecuredata)
313
+ - [createRBACConfig](modules.md#createrbacconfig)
314
+ - [getRBACConfig](modules.md#getrbacconfig)
315
+ - [getRBACLogger](modules.md#getrbaclogger)
316
+ - [isDebugMode](modules.md#isdebugmode)
317
+ - [isDevelopmentMode](modules.md#isdevelopmentmode)
318
+ - [createRBACEngine](modules.md#createrbacengine)
319
+ - [usePermissions](modules.md#usepermissions)
320
+ - [useCan](modules.md#usecan)
321
+ - [useAccessLevel](modules.md#useaccesslevel)
322
+ - [useMultiplePermissions](modules.md#usemultiplepermissions)
323
+ - [useHasAnyPermission](modules.md#usehasanypermission)
324
+ - [useHasAllPermissions](modules.md#usehasallpermissions)
325
+ - [useCachedPermissions](modules.md#usecachedpermissions)
326
+ - [useRBAC](modules.md#userbac)
327
+ - [isValidPermission](modules.md#isvalidpermission)
328
+ - [getPermissionsForRole](modules.md#getpermissionsforrole)
329
+ - [useRBACProvider](modules.md#userbacprovider)
330
+ - [RBACProvider](modules.md#rbacprovider)
331
+ - [createSecureClient](modules.md#createsecureclient)
332
+ - [fromSupabaseClient](modules.md#fromsupabaseclient)
229
333
  - [getStylePath](modules.md#getstylepath)
230
334
  - [getAllStylePaths](modules.md#getallstylepaths)
231
335
  - [applyPalette](modules.md#applypalette)
@@ -297,8 +401,402 @@ Row identifier function type
297
401
 
298
402
  [packages/core/src/components/DataTable/types.ts:32](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/DataTable/types.ts#L32)
299
403
 
404
+ ___
405
+
406
+ ### LogLevel
407
+
408
+ Ƭ **LogLevel**: ``"error"`` \| ``"warn"`` \| ``"info"`` \| ``"debug"``
409
+
410
+ #### Defined in
411
+
412
+ [packages/core/src/rbac/config.ts:13](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/config.ts#L13)
413
+
414
+ ___
415
+
416
+ ### AllPermissions
417
+
418
+ Ƭ **AllPermissions**: typeof [`ALL_PERMISSIONS`](modules.md#all_permissions)
419
+
420
+ #### Defined in
421
+
422
+ [packages/core/src/rbac/permissions.ts:293](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/permissions.ts#L293)
423
+
424
+ ___
425
+
426
+ ### UUID
427
+
428
+ Ƭ **UUID**: `string`
429
+
430
+ #### Defined in
431
+
432
+ [packages/core/src/rbac/types.ts:17](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L17)
433
+
434
+ ___
435
+
436
+ ### Operation
437
+
438
+ Ƭ **Operation**: ``"read"`` \| ``"create"`` \| ``"update"`` \| ``"delete"`` \| ``"manage"``
439
+
440
+ #### Defined in
441
+
442
+ [packages/core/src/rbac/types.ts:19](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L19)
443
+
444
+ ___
445
+
446
+ ### Permission
447
+
448
+ Ƭ **Permission**: \`$\{Operation}:$\{string}\`
449
+
450
+ #### Defined in
451
+
452
+ [packages/core/src/rbac/types.ts:21](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L21)
453
+
454
+ ___
455
+
456
+ ### AccessLevel
457
+
458
+ Ƭ **AccessLevel**: ``"viewer"`` \| ``"participant"`` \| ``"planner"`` \| ``"admin"`` \| ``"super"``
459
+
460
+ #### Defined in
461
+
462
+ [packages/core/src/rbac/types.ts:23](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L23)
463
+
464
+ ___
465
+
466
+ ### Scope
467
+
468
+ Ƭ **Scope**: `Object`
469
+
470
+ #### Type declaration
471
+
472
+ | Name | Type |
473
+ | :------ | :------ |
474
+ | `organisationId?` | [`UUID`](modules.md#uuid) |
475
+ | `eventId?` | `string` |
476
+ | `appId?` | [`UUID`](modules.md#uuid) |
477
+
478
+ #### Defined in
479
+
480
+ [packages/core/src/rbac/types.ts:30](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L30)
481
+
482
+ ___
483
+
484
+ ### PermissionCheck
485
+
486
+ Ƭ **PermissionCheck**: `Object`
487
+
488
+ #### Type declaration
489
+
490
+ | Name | Type |
491
+ | :------ | :------ |
492
+ | `userId` | [`UUID`](modules.md#uuid) |
493
+ | `scope` | [`Scope`](modules.md#scope) |
494
+ | `permission` | [`Permission`](modules.md#permission) |
495
+ | `pageId?` | [`UUID`](modules.md#uuid) \| `string` |
496
+
497
+ #### Defined in
498
+
499
+ [packages/core/src/rbac/types.ts:36](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L36)
500
+
501
+ ___
502
+
503
+ ### PermissionMap
504
+
505
+ Ƭ **PermissionMap**: `Record`\<`string`, [`Operation`](modules.md#operation)[]\>
506
+
507
+ #### Defined in
508
+
509
+ [packages/core/src/rbac/types.ts:43](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L43)
510
+
511
+ ___
512
+
513
+ ### GlobalRole
514
+
515
+ Ƭ **GlobalRole**: ``"super_admin"``
516
+
517
+ #### Defined in
518
+
519
+ [packages/core/src/rbac/types.ts:49](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L49)
520
+
521
+ ___
522
+
523
+ ### OrganisationRole
524
+
525
+ Ƭ **OrganisationRole**: ``"supporter"`` \| ``"member"`` \| ``"leader"`` \| ``"org_admin"``
526
+
527
+ #### Defined in
528
+
529
+ [packages/core/src/rbac/types.ts:51](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L51)
530
+
531
+ ___
532
+
533
+ ### EventAppRole
534
+
535
+ Ƭ **EventAppRole**: ``"viewer"`` \| ``"participant"`` \| ``"planner"`` \| ``"event_admin"``
536
+
537
+ #### Defined in
538
+
539
+ [packages/core/src/rbac/types.ts:53](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L53)
540
+
300
541
  ## Variables
301
542
 
543
+ ### rbacCache
544
+
545
+ • `Const` **rbacCache**: [`RBACCache`](classes/RBACCache.md)
546
+
547
+ Global cache instance
548
+
549
+ This is the default cache instance used by the RBAC system.
550
+ You can create additional instances if needed for different contexts.
551
+
552
+ #### Defined in
553
+
554
+ [packages/core/src/rbac/cache.ts:204](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/cache.ts#L204)
555
+
556
+ ___
557
+
558
+ ### CACHE\_PATTERNS
559
+
560
+ • `Const` **CACHE\_PATTERNS**: `Object`
561
+
562
+ Cache key patterns for invalidation
563
+
564
+ #### Type declaration
565
+
566
+ | Name | Type |
567
+ | :------ | :------ |
568
+ | `USER` | (`userId`: `string`) => `string` |
569
+ | `ORGANISATION` | (`organisationId`: `string`) => `string` |
570
+ | `EVENT` | (`eventId`: `string`) => `string` |
571
+ | `APP` | (`appId`: `string`) => `string` |
572
+ | `PERMISSION` | (`userId`: `string`, `organisationId`: `string`) => `string` |
573
+
574
+ #### Defined in
575
+
576
+ [packages/core/src/rbac/cache.ts:209](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/cache.ts#L209)
577
+
578
+ ___
579
+
580
+ ### GLOBAL\_PERMISSIONS
581
+
582
+ • `Const` **GLOBAL\_PERMISSIONS**: `Object`
583
+
584
+ #### Type declaration
585
+
586
+ | Name | Type |
587
+ | :------ | :------ |
588
+ | `MANAGE_ALL` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
589
+ | `READ_ALL` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
590
+ | `CREATE_ALL` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
591
+ | `UPDATE_ALL` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
592
+ | `DELETE_ALL` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
593
+
594
+ #### Defined in
595
+
596
+ [packages/core/src/rbac/permissions.ts:17](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/permissions.ts#L17)
597
+
598
+ ___
599
+
600
+ ### ORGANISATION\_PERMISSIONS
601
+
602
+ • `Const` **ORGANISATION\_PERMISSIONS**: `Object`
603
+
604
+ #### Type declaration
605
+
606
+ | Name | Type |
607
+ | :------ | :------ |
608
+ | `MANAGE_ORGANISATION` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
609
+ | `READ_ORGANISATION` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
610
+ | `UPDATE_ORGANISATION` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
611
+ | `MANAGE_USERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
612
+ | `READ_USERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
613
+ | `CREATE_USERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
614
+ | `UPDATE_USERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
615
+ | `DELETE_USERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
616
+ | `MANAGE_ROLES` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
617
+ | `READ_ROLES` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
618
+ | `CREATE_ROLES` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
619
+ | `UPDATE_ROLES` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
620
+ | `DELETE_ROLES` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
621
+ | `MANAGE_EVENTS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
622
+ | `READ_EVENTS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
623
+ | `CREATE_EVENTS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
624
+ | `UPDATE_EVENTS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
625
+ | `DELETE_EVENTS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
626
+ | `MANAGE_APPS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
627
+ | `READ_APPS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
628
+ | `CREATE_APPS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
629
+ | `UPDATE_APPS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
630
+ | `DELETE_APPS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
631
+
632
+ #### Defined in
633
+
634
+ [packages/core/src/rbac/permissions.ts:29](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/permissions.ts#L29)
635
+
636
+ ___
637
+
638
+ ### EVENT\_APP\_PERMISSIONS
639
+
640
+ • `Const` **EVENT\_APP\_PERMISSIONS**: `Object`
641
+
642
+ #### Type declaration
643
+
644
+ | Name | Type |
645
+ | :------ | :------ |
646
+ | `MANAGE_EVENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
647
+ | `READ_EVENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
648
+ | `UPDATE_EVENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
649
+ | `MANAGE_APP` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
650
+ | `READ_APP` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
651
+ | `UPDATE_APP` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
652
+ | `MANAGE_TEAM` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
653
+ | `READ_TEAM` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
654
+ | `CREATE_TEAM` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
655
+ | `UPDATE_TEAM` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
656
+ | `DELETE_TEAM` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
657
+ | `MANAGE_TEAM_MEMBERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
658
+ | `READ_TEAM_MEMBERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
659
+ | `CREATE_TEAM_MEMBERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
660
+ | `UPDATE_TEAM_MEMBERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
661
+ | `DELETE_TEAM_MEMBERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
662
+ | `MANAGE_EVENT_CONTENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
663
+ | `READ_EVENT_CONTENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
664
+ | `CREATE_EVENT_CONTENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
665
+ | `UPDATE_EVENT_CONTENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
666
+ | `DELETE_EVENT_CONTENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
667
+ | `MANAGE_EVENT_SETTINGS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
668
+ | `READ_EVENT_SETTINGS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
669
+ | `UPDATE_EVENT_SETTINGS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
670
+
671
+ #### Defined in
672
+
673
+ [packages/core/src/rbac/permissions.ts:68](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/permissions.ts#L68)
674
+
675
+ ___
676
+
677
+ ### PAGE\_PERMISSIONS
678
+
679
+ • `Const` **PAGE\_PERMISSIONS**: `Object`
680
+
681
+ #### Type declaration
682
+
683
+ | Name | Type |
684
+ | :------ | :------ |
685
+ | `READ_PAGE` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
686
+ | `MANAGE_PAGE` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
687
+ | `READ_ADMIN` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
688
+ | `MANAGE_ADMIN` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
689
+ | `READ_DASHBOARD` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
690
+ | `MANAGE_DASHBOARD` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
691
+ | `READ_SETTINGS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
692
+ | `MANAGE_SETTINGS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
693
+ | `READ_REPORTS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
694
+ | `MANAGE_REPORTS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
695
+
696
+ #### Defined in
697
+
698
+ [packages/core/src/rbac/permissions.ts:110](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/permissions.ts#L110)
699
+
700
+ ___
701
+
702
+ ### PERMISSION\_GROUPS
703
+
704
+ • `Const` **PERMISSION\_GROUPS**: `Object`
705
+
706
+ #### Type declaration
707
+
708
+ | Name | Type |
709
+ | :------ | :------ |
710
+ | `GLOBAL_ADMIN` | readonly [\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`] |
711
+ | `ORG_ADMIN` | readonly [\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`] |
712
+ | `EVENT_ADMIN` | readonly [\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`] |
713
+ | `PLANNER` | readonly [\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`] |
714
+ | `PARTICIPANT` | readonly [\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`] |
715
+ | `VIEWER` | readonly [\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`, \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`] |
716
+
717
+ #### Defined in
718
+
719
+ [packages/core/src/rbac/permissions.ts:136](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/permissions.ts#L136)
720
+
721
+ ___
722
+
723
+ ### ALL\_PERMISSIONS
724
+
725
+ • `Const` **ALL\_PERMISSIONS**: `Object`
726
+
727
+ #### Type declaration
728
+
729
+ | Name | Type |
730
+ | :------ | :------ |
731
+ | `MANAGE_ALL` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
732
+ | `READ_ALL` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
733
+ | `CREATE_ALL` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
734
+ | `UPDATE_ALL` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
735
+ | `DELETE_ALL` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
736
+ | `MANAGE_ORGANISATION` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
737
+ | `READ_ORGANISATION` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
738
+ | `UPDATE_ORGANISATION` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
739
+ | `MANAGE_USERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
740
+ | `READ_USERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
741
+ | `CREATE_USERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
742
+ | `UPDATE_USERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
743
+ | `DELETE_USERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
744
+ | `MANAGE_ROLES` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
745
+ | `READ_ROLES` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
746
+ | `CREATE_ROLES` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
747
+ | `UPDATE_ROLES` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
748
+ | `DELETE_ROLES` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
749
+ | `MANAGE_EVENTS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
750
+ | `READ_EVENTS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
751
+ | `CREATE_EVENTS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
752
+ | `UPDATE_EVENTS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
753
+ | `DELETE_EVENTS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
754
+ | `MANAGE_APPS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
755
+ | `READ_APPS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
756
+ | `CREATE_APPS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
757
+ | `UPDATE_APPS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
758
+ | `DELETE_APPS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
759
+ | `MANAGE_EVENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
760
+ | `READ_EVENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
761
+ | `UPDATE_EVENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
762
+ | `MANAGE_APP` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
763
+ | `READ_APP` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
764
+ | `UPDATE_APP` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
765
+ | `MANAGE_TEAM` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
766
+ | `READ_TEAM` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
767
+ | `CREATE_TEAM` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
768
+ | `UPDATE_TEAM` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
769
+ | `DELETE_TEAM` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
770
+ | `MANAGE_TEAM_MEMBERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
771
+ | `READ_TEAM_MEMBERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
772
+ | `CREATE_TEAM_MEMBERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
773
+ | `UPDATE_TEAM_MEMBERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
774
+ | `DELETE_TEAM_MEMBERS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
775
+ | `MANAGE_EVENT_CONTENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
776
+ | `READ_EVENT_CONTENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
777
+ | `CREATE_EVENT_CONTENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
778
+ | `UPDATE_EVENT_CONTENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
779
+ | `DELETE_EVENT_CONTENT` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
780
+ | `MANAGE_EVENT_SETTINGS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
781
+ | `READ_EVENT_SETTINGS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
782
+ | `UPDATE_EVENT_SETTINGS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
783
+ | `READ_PAGE` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
784
+ | `MANAGE_PAGE` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
785
+ | `READ_ADMIN` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
786
+ | `MANAGE_ADMIN` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
787
+ | `READ_DASHBOARD` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
788
+ | `MANAGE_DASHBOARD` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
789
+ | `READ_SETTINGS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
790
+ | `MANAGE_SETTINGS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
791
+ | `READ_REPORTS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
792
+ | `MANAGE_REPORTS` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` |
793
+
794
+ #### Defined in
795
+
796
+ [packages/core/src/rbac/permissions.ts:286](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/permissions.ts#L286)
797
+
798
+ ___
799
+
302
800
  ### styleConfig
303
801
 
304
802
  • `Const` **styleConfig**: `Object`
@@ -3626,6 +4124,1749 @@ ___
3626
4124
 
3627
4125
  ___
3628
4126
 
4127
+ ### PermissionGuard
4128
+
4129
+ ▸ **PermissionGuard**(`«destructured»`): `React.ReactNode`
4130
+
4131
+ Permission Guard Component
4132
+
4133
+ A React component that conditionally renders children based on permissions.
4134
+ Can auto-infer userId from context if not provided.
4135
+
4136
+ #### Parameters
4137
+
4138
+ | Name | Type | Default value |
4139
+ | :------ | :------ | :------ |
4140
+ | `«destructured»` | `Object` | `undefined` |
4141
+ | › `userId?` | `string` | `undefined` |
4142
+ | › `scope` | `Object` | `undefined` |
4143
+ | › `scope.organisationId` | `string` | `undefined` |
4144
+ | › `scope.eventId?` | `string` | `undefined` |
4145
+ | › `scope.appId?` | `string` | `undefined` |
4146
+ | › `permission` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` | `undefined` |
4147
+ | › `pageId?` | `string` | `undefined` |
4148
+ | › `children` | `ReactNode` | `undefined` |
4149
+ | › `fallback?` | `ReactNode` | `null` |
4150
+ | › `onDenied?` | () => `void` | `undefined` |
4151
+ | › `loading?` | `ReactNode` | `null` |
4152
+ | › `strictMode?` | `boolean` | `true` |
4153
+ | › `auditLog?` | `boolean` | `true` |
4154
+ | › `enforceAudit?` | `boolean` | `true` |
4155
+
4156
+ #### Returns
4157
+
4158
+ `React.ReactNode`
4159
+
4160
+ **`Example`**
4161
+
4162
+ ```tsx
4163
+ // With explicit userId and scope
4164
+ <PermissionGuard
4165
+ userId="user-123"
4166
+ scope={{ organisationId: 'org-456' }}
4167
+ permission="manage:events"
4168
+ pageId="page-789"
4169
+ fallback={<AccessDenied />}
4170
+ >
4171
+ <AdminPanel />
4172
+ </PermissionGuard>
4173
+
4174
+ // With context inference (requires auth context)
4175
+ <PermissionGuard
4176
+ permission="manage:events"
4177
+ scope={{ organisationId: 'org-456' }}
4178
+ fallback={<AccessDenied />}
4179
+ >
4180
+ <AdminPanel />
4181
+ </PermissionGuard>
4182
+ ```
4183
+
4184
+ #### Defined in
4185
+
4186
+ [packages/core/src/rbac/adapters.tsx:49](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L49)
4187
+
4188
+ ___
4189
+
4190
+ ### AccessLevelGuard
4191
+
4192
+ ▸ **AccessLevelGuard**(`«destructured»`): `React.ReactNode`
4193
+
4194
+ Access Level Guard Component
4195
+
4196
+ A React component that conditionally renders children based on access level.
4197
+ Can auto-infer userId from context if not provided.
4198
+
4199
+ #### Parameters
4200
+
4201
+ | Name | Type | Default value |
4202
+ | :------ | :------ | :------ |
4203
+ | `«destructured»` | `Object` | `undefined` |
4204
+ | › `userId?` | `string` | `undefined` |
4205
+ | › `scope` | `Object` | `undefined` |
4206
+ | › `scope.organisationId` | `string` | `undefined` |
4207
+ | › `scope.eventId?` | `string` | `undefined` |
4208
+ | › `scope.appId?` | `string` | `undefined` |
4209
+ | › `minLevel` | ``"viewer"`` \| ``"participant"`` \| ``"planner"`` \| ``"admin"`` \| ``"super"`` | `undefined` |
4210
+ | › `children` | `ReactNode` | `undefined` |
4211
+ | › `fallback?` | `ReactNode` | `null` |
4212
+ | › `loading?` | `ReactNode` | `null` |
4213
+
4214
+ #### Returns
4215
+
4216
+ `React.ReactNode`
4217
+
4218
+ **`Example`**
4219
+
4220
+ ```tsx
4221
+ // With explicit userId and scope
4222
+ <AccessLevelGuard
4223
+ userId="user-123"
4224
+ scope={{ organisationId: 'org-456' }}
4225
+ minLevel="admin"
4226
+ fallback={<AccessDenied />}
4227
+ >
4228
+ <AdminPanel />
4229
+ </AccessLevelGuard>
4230
+
4231
+ // With context inference (requires auth context)
4232
+ <AccessLevelGuard
4233
+ minLevel="admin"
4234
+ scope={{ organisationId: 'org-456' }}
4235
+ fallback={<AccessDenied />}
4236
+ >
4237
+ <AdminPanel />
4238
+ </AccessLevelGuard>
4239
+ ```
4240
+
4241
+ #### Defined in
4242
+
4243
+ [packages/core/src/rbac/adapters.tsx:221](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L221)
4244
+
4245
+ ___
4246
+
4247
+ ### withPermissionGuard
4248
+
4249
+ ▸ **withPermissionGuard**\<`T`\>(`config`, `handler`): (...`args`: `T`) => `Promise`\<`any`\>
4250
+
4251
+ Permission Guard for Server Handlers
4252
+
4253
+ Wraps a server handler with permission checking.
4254
+
4255
+ #### Type parameters
4256
+
4257
+ | Name | Type |
4258
+ | :------ | :------ |
4259
+ | `T` | extends `any`[] |
4260
+
4261
+ #### Parameters
4262
+
4263
+ | Name | Type | Description |
4264
+ | :------ | :------ | :------ |
4265
+ | `config` | `Object` | Permission guard configuration |
4266
+ | `config.permission` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` | - |
4267
+ | `config.pageId?` | `string` | - |
4268
+ | `handler` | (...`args`: `T`) => `Promise`\<`any`\> | Handler function to wrap |
4269
+
4270
+ #### Returns
4271
+
4272
+ `fn`
4273
+
4274
+ Wrapped handler function
4275
+
4276
+ ▸ (`...args`): `Promise`\<`any`\>
4277
+
4278
+ ##### Parameters
4279
+
4280
+ | Name | Type |
4281
+ | :------ | :------ |
4282
+ | `...args` | `T` |
4283
+
4284
+ ##### Returns
4285
+
4286
+ `Promise`\<`any`\>
4287
+
4288
+ **`Example`**
4289
+
4290
+ ```typescript
4291
+ const protectedHandler = withPermissionGuard(
4292
+ { permission: 'manage:events', pageId: 'page-789' },
4293
+ async (req, res) => {
4294
+ // Handler logic here
4295
+ res.json({ success: true });
4296
+ }
4297
+ );
4298
+ ```
4299
+
4300
+ #### Defined in
4301
+
4302
+ [packages/core/src/rbac/adapters.tsx:333](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L333)
4303
+
4304
+ ___
4305
+
4306
+ ### withAccessLevelGuard
4307
+
4308
+ ▸ **withAccessLevelGuard**\<`T`\>(`minLevel`, `handler`): (...`args`: `T`) => `Promise`\<`any`\>
4309
+
4310
+ Access Level Guard for Server Handlers
4311
+
4312
+ Wraps a server handler with access level checking.
4313
+
4314
+ #### Type parameters
4315
+
4316
+ | Name | Type |
4317
+ | :------ | :------ |
4318
+ | `T` | extends `any`[] |
4319
+
4320
+ #### Parameters
4321
+
4322
+ | Name | Type | Description |
4323
+ | :------ | :------ | :------ |
4324
+ | `minLevel` | ``"viewer"`` \| ``"participant"`` \| ``"planner"`` \| ``"admin"`` \| ``"super"`` | Minimum access level required |
4325
+ | `handler` | (...`args`: `T`) => `Promise`\<`any`\> | Handler function to wrap |
4326
+
4327
+ #### Returns
4328
+
4329
+ `fn`
4330
+
4331
+ Wrapped handler function
4332
+
4333
+ ▸ (`...args`): `Promise`\<`any`\>
4334
+
4335
+ ##### Parameters
4336
+
4337
+ | Name | Type |
4338
+ | :------ | :------ |
4339
+ | `...args` | `T` |
4340
+
4341
+ ##### Returns
4342
+
4343
+ `Promise`\<`any`\>
4344
+
4345
+ **`Example`**
4346
+
4347
+ ```typescript
4348
+ const adminHandler = withAccessLevelGuard(
4349
+ 'admin',
4350
+ async (req, res) => {
4351
+ // Admin-only logic here
4352
+ res.json({ success: true });
4353
+ }
4354
+ );
4355
+ ```
4356
+
4357
+ #### Defined in
4358
+
4359
+ [packages/core/src/rbac/adapters.tsx:390](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L390)
4360
+
4361
+ ___
4362
+
4363
+ ### withRoleGuard
4364
+
4365
+ ▸ **withRoleGuard**\<`T`\>(`config`, `handler`): (...`args`: `T`) => `Promise`\<`any`\>
4366
+
4367
+ Role Guard for Server Handlers
4368
+
4369
+ Wraps a server handler with role-based access control.
4370
+ This is the primary middleware for routing protection as specified in the contract.
4371
+
4372
+ #### Type parameters
4373
+
4374
+ | Name | Type |
4375
+ | :------ | :------ |
4376
+ | `T` | extends `any`[] |
4377
+
4378
+ #### Parameters
4379
+
4380
+ | Name | Type | Description |
4381
+ | :------ | :------ | :------ |
4382
+ | `config` | `Object` | Role guard configuration |
4383
+ | `config.globalRoles?` | `string`[] | - |
4384
+ | `config.organisationRoles?` | `string`[] | - |
4385
+ | `config.eventAppRoles?` | `string`[] | - |
4386
+ | `config.requireAll?` | `boolean` | - |
4387
+ | `handler` | (...`args`: `T`) => `Promise`\<`any`\> | Handler function to wrap |
4388
+
4389
+ #### Returns
4390
+
4391
+ `fn`
4392
+
4393
+ Wrapped handler function
4394
+
4395
+ ▸ (`...args`): `Promise`\<`any`\>
4396
+
4397
+ ##### Parameters
4398
+
4399
+ | Name | Type |
4400
+ | :------ | :------ |
4401
+ | `...args` | `T` |
4402
+
4403
+ ##### Returns
4404
+
4405
+ `Promise`\<`any`\>
4406
+
4407
+ **`Example`**
4408
+
4409
+ ```typescript
4410
+ const adminHandler = withRoleGuard(
4411
+ {
4412
+ globalRoles: ['super_admin'],
4413
+ organisationRoles: ['org_admin', 'leader'],
4414
+ eventAppRoles: ['event_admin', 'planner']
4415
+ },
4416
+ async (req, res) => {
4417
+ // Admin-only logic here
4418
+ res.json({ success: true });
4419
+ }
4420
+ );
4421
+ ```
4422
+
4423
+ #### Defined in
4424
+
4425
+ [packages/core/src/rbac/adapters.tsx:451](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L451)
4426
+
4427
+ ___
4428
+
4429
+ ### createRBACMiddleware
4430
+
4431
+ ▸ **createRBACMiddleware**(`config`): (`req`: \{ `nextUrl`: \{ `pathname`: `string` } ; `user?`: \{ `id`: `string` } ; `organisationId?`: `string` }, `res`: \{ `redirect`: (`url`: `string`) => `void` }, `next`: () => `void`) => `Promise`\<`void`\>
4432
+
4433
+ Next.js Middleware for RBAC
4434
+
4435
+ Middleware that checks permissions before allowing access to pages.
4436
+
4437
+ #### Parameters
4438
+
4439
+ | Name | Type | Description |
4440
+ | :------ | :------ | :------ |
4441
+ | `config` | `Object` | Middleware configuration |
4442
+ | `config.protectedRoutes` | \{ `path`: `string` ; `permission`: \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` ; `pageId?`: `string` }[] | - |
4443
+ | `config.fallbackUrl?` | `string` | - |
4444
+
4445
+ #### Returns
4446
+
4447
+ `fn`
4448
+
4449
+ Next.js middleware function
4450
+
4451
+ ▸ (`req`, `res`, `next`): `Promise`\<`void`\>
4452
+
4453
+ ##### Parameters
4454
+
4455
+ | Name | Type |
4456
+ | :------ | :------ |
4457
+ | `req` | `Object` |
4458
+ | `req.nextUrl` | `Object` |
4459
+ | `req.nextUrl.pathname` | `string` |
4460
+ | `req.user?` | `Object` |
4461
+ | `req.user.id` | `string` |
4462
+ | `req.organisationId?` | `string` |
4463
+ | `res` | `Object` |
4464
+ | `res.redirect` | (`url`: `string`) => `void` |
4465
+ | `next` | () => `void` |
4466
+
4467
+ ##### Returns
4468
+
4469
+ `Promise`\<`void`\>
4470
+
4471
+ **`Example`**
4472
+
4473
+ ```typescript
4474
+ // middleware.ts
4475
+ import { createRBACMiddleware } from '@jmruthers/pace-core/rbac';
4476
+
4477
+ export default createRBACMiddleware({
4478
+ protectedRoutes: [
4479
+ { path: '/admin', permission: 'manage:admin' },
4480
+ { path: '/events', permission: 'read:events' },
4481
+ ],
4482
+ fallbackUrl: '/access-denied',
4483
+ });
4484
+ ```
4485
+
4486
+ #### Defined in
4487
+
4488
+ [packages/core/src/rbac/adapters.tsx:574](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L574)
4489
+
4490
+ ___
4491
+
4492
+ ### createRBACExpressMiddleware
4493
+
4494
+ ▸ **createRBACExpressMiddleware**(`config`): (`req`: \{ `user?`: \{ `id`: `string` } ; `organisationId?`: `string` ; `eventId?`: `string` ; `appId?`: `string` }, `res`: \{ `status`: (`code`: `number`) => \{ `json`: (`data`: `object`) => `void` } }, `next`: () => `void`) => `Promise`\<`void`\>
4495
+
4496
+ Express Middleware for RBAC
4497
+
4498
+ Middleware that checks permissions for Express routes.
4499
+
4500
+ #### Parameters
4501
+
4502
+ | Name | Type | Description |
4503
+ | :------ | :------ | :------ |
4504
+ | `config` | `Object` | Middleware configuration |
4505
+ | `config.permission` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` | - |
4506
+ | `config.pageId?` | `string` | - |
4507
+
4508
+ #### Returns
4509
+
4510
+ `fn`
4511
+
4512
+ Express middleware function
4513
+
4514
+ ▸ (`req`, `res`, `next`): `Promise`\<`void`\>
4515
+
4516
+ ##### Parameters
4517
+
4518
+ | Name | Type |
4519
+ | :------ | :------ |
4520
+ | `req` | `Object` |
4521
+ | `req.user?` | `Object` |
4522
+ | `req.user.id` | `string` |
4523
+ | `req.organisationId?` | `string` |
4524
+ | `req.eventId?` | `string` |
4525
+ | `req.appId?` | `string` |
4526
+ | `res` | `Object` |
4527
+ | `res.status` | (`code`: `number`) => \{ `json`: (`data`: `object`) => `void` } |
4528
+ | `next` | () => `void` |
4529
+
4530
+ ##### Returns
4531
+
4532
+ `Promise`\<`void`\>
4533
+
4534
+ **`Example`**
4535
+
4536
+ ```typescript
4537
+ import { createRBACExpressMiddleware } from '@jmruthers/pace-core/rbac';
4538
+
4539
+ app.use(createRBACExpressMiddleware({
4540
+ permission: 'read:api',
4541
+ pageId: 'api-page-123',
4542
+ }));
4543
+ ```
4544
+
4545
+ #### Defined in
4546
+
4547
+ [packages/core/src/rbac/adapters.tsx:641](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L641)
4548
+
4549
+ ___
4550
+
4551
+ ### hasPermissionCached
4552
+
4553
+ ▸ **hasPermissionCached**(`userId`, `scope`, `_permission`, `_pageId?`): `boolean`
4554
+
4555
+ Check if a user has a permission (synchronous cache check only)
4556
+
4557
+ #### Parameters
4558
+
4559
+ | Name | Type | Description |
4560
+ | :------ | :------ | :------ |
4561
+ | `userId` | `string` | User ID |
4562
+ | `scope` | `Object` | Permission scope |
4563
+ | `scope.organisationId` | `string` | - |
4564
+ | `scope.eventId?` | `string` | - |
4565
+ | `scope.appId?` | `string` | - |
4566
+ | `_permission` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` | - |
4567
+ | `_pageId?` | `string` | - |
4568
+
4569
+ #### Returns
4570
+
4571
+ `boolean`
4572
+
4573
+ True if permission is cached and granted
4574
+
4575
+ #### Defined in
4576
+
4577
+ [packages/core/src/rbac/adapters.tsx:689](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L689)
4578
+
4579
+ ___
4580
+
4581
+ ### hasAnyPermissionCached
4582
+
4583
+ ▸ **hasAnyPermissionCached**(`userId`, `scope`, `permissions`, `pageId?`): `boolean`
4584
+
4585
+ Check if a user has any of the specified permissions (synchronous cache check only)
4586
+
4587
+ #### Parameters
4588
+
4589
+ | Name | Type | Description |
4590
+ | :------ | :------ | :------ |
4591
+ | `userId` | `string` | User ID |
4592
+ | `scope` | `Object` | Permission scope |
4593
+ | `scope.organisationId` | `string` | - |
4594
+ | `scope.eventId?` | `string` | - |
4595
+ | `scope.appId?` | `string` | - |
4596
+ | `permissions` | (\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`)[] | Array of permissions to check |
4597
+ | `pageId?` | `string` | Optional page ID |
4598
+
4599
+ #### Returns
4600
+
4601
+ `boolean`
4602
+
4603
+ True if any permission is cached and granted
4604
+
4605
+ #### Defined in
4606
+
4607
+ [packages/core/src/rbac/adapters.tsx:714](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/adapters.tsx#L714)
4608
+
4609
+ ___
4610
+
4611
+ ### setupRBAC
4612
+
4613
+ ▸ **setupRBAC**(`supabase`, `config?`): `void`
4614
+
4615
+ Setup RBAC system
4616
+
4617
+ #### Parameters
4618
+
4619
+ | Name | Type | Description |
4620
+ | :------ | :------ | :------ |
4621
+ | `supabase` | `default`\<`Database`, ``"public"``, ``"public"``, `never`, {}\> | Supabase client |
4622
+ | `config?` | `Partial`\<[`RBACConfig`](interfaces/RBACConfig.md)\> | Optional configuration |
4623
+
4624
+ #### Returns
4625
+
4626
+ `void`
4627
+
4628
+ #### Defined in
4629
+
4630
+ [packages/core/src/rbac/api.ts:35](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/api.ts#L35)
4631
+
4632
+ ___
4633
+
4634
+ ### getAccessLevel
4635
+
4636
+ ▸ **getAccessLevel**(`input`): `Promise`\<[`AccessLevel`](modules.md#accesslevel)\>
4637
+
4638
+ Get user's access level in a scope
4639
+
4640
+ #### Parameters
4641
+
4642
+ | Name | Type | Description |
4643
+ | :------ | :------ | :------ |
4644
+ | `input` | `Object` | Access level input |
4645
+ | `input.userId` | `string` | - |
4646
+ | `input.scope` | [`Scope`](modules.md#scope) | - |
4647
+
4648
+ #### Returns
4649
+
4650
+ `Promise`\<[`AccessLevel`](modules.md#accesslevel)\>
4651
+
4652
+ Promise resolving to access level
4653
+
4654
+ **`Example`**
4655
+
4656
+ ```typescript
4657
+ const accessLevel = await getAccessLevel({
4658
+ userId: 'user-123',
4659
+ scope: { organisationId: 'org-456' }
4660
+ });
4661
+ ```
4662
+
4663
+ #### Defined in
4664
+
4665
+ [packages/core/src/rbac/api.ts:85](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/api.ts#L85)
4666
+
4667
+ ___
4668
+
4669
+ ### getPermissionMap
4670
+
4671
+ ▸ **getPermissionMap**(`input`): `Promise`\<[`PermissionMap`](modules.md#permissionmap)\>
4672
+
4673
+ Get user's permission map for a scope
4674
+
4675
+ #### Parameters
4676
+
4677
+ | Name | Type | Description |
4678
+ | :------ | :------ | :------ |
4679
+ | `input` | `Object` | Permission map input |
4680
+ | `input.userId` | `string` | - |
4681
+ | `input.scope` | [`Scope`](modules.md#scope) | - |
4682
+
4683
+ #### Returns
4684
+
4685
+ `Promise`\<[`PermissionMap`](modules.md#permissionmap)\>
4686
+
4687
+ Promise resolving to permission map
4688
+
4689
+ **`Example`**
4690
+
4691
+ ```typescript
4692
+ const permissions = await getPermissionMap({
4693
+ userId: 'user-123',
4694
+ scope: {
4695
+ organisationId: 'org-456',
4696
+ eventId: 'event-789',
4697
+ appId: 'app-101'
4698
+ }
4699
+ });
4700
+ ```
4701
+
4702
+ #### Defined in
4703
+
4704
+ [packages/core/src/rbac/api.ts:111](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/api.ts#L111)
4705
+
4706
+ ___
4707
+
4708
+ ### isPermitted
4709
+
4710
+ ▸ **isPermitted**(`input`): `Promise`\<`boolean`\>
4711
+
4712
+ Check if user has a specific permission
4713
+
4714
+ #### Parameters
4715
+
4716
+ | Name | Type | Description |
4717
+ | :------ | :------ | :------ |
4718
+ | `input` | [`PermissionCheck`](modules.md#permissioncheck) | Permission check input |
4719
+
4720
+ #### Returns
4721
+
4722
+ `Promise`\<`boolean`\>
4723
+
4724
+ Promise resolving to permission result
4725
+
4726
+ **`Example`**
4727
+
4728
+ ```typescript
4729
+ const canManage = await isPermitted({
4730
+ userId: 'user-123',
4731
+ scope: { organisationId: 'org-456' },
4732
+ permission: 'manage:events',
4733
+ pageId: 'page-789'
4734
+ });
4735
+ ```
4736
+
4737
+ #### Defined in
4738
+
4739
+ [packages/core/src/rbac/api.ts:135](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/api.ts#L135)
4740
+
4741
+ ___
4742
+
4743
+ ### isPermittedCached
4744
+
4745
+ ▸ **isPermittedCached**(`input`): `Promise`\<`boolean`\>
4746
+
4747
+ Check if user has a specific permission (cached version)
4748
+
4749
+ #### Parameters
4750
+
4751
+ | Name | Type | Description |
4752
+ | :------ | :------ | :------ |
4753
+ | `input` | [`PermissionCheck`](modules.md#permissioncheck) | Permission check input |
4754
+
4755
+ #### Returns
4756
+
4757
+ `Promise`\<`boolean`\>
4758
+
4759
+ Promise resolving to permission result
4760
+
4761
+ #### Defined in
4762
+
4763
+ [packages/core/src/rbac/api.ts:146](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/api.ts#L146)
4764
+
4765
+ ___
4766
+
4767
+ ### hasPermission
4768
+
4769
+ ▸ **hasPermission**(`input`): `Promise`\<`boolean`\>
4770
+
4771
+ Check if a user has a specific permission (alias for isPermitted)
4772
+
4773
+ #### Parameters
4774
+
4775
+ | Name | Type | Description |
4776
+ | :------ | :------ | :------ |
4777
+ | `input` | [`PermissionCheck`](modules.md#permissioncheck) | Permission check parameters |
4778
+
4779
+ #### Returns
4780
+
4781
+ `Promise`\<`boolean`\>
4782
+
4783
+ Promise<boolean> - True if user has permission
4784
+
4785
+ #### Defined in
4786
+
4787
+ [packages/core/src/rbac/api.ts:179](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/api.ts#L179)
4788
+
4789
+ ___
4790
+
4791
+ ### hasAnyPermission
4792
+
4793
+ ▸ **hasAnyPermission**(`input`): `Promise`\<`boolean`\>
4794
+
4795
+ Check if user has any of the specified permissions
4796
+
4797
+ #### Parameters
4798
+
4799
+ | Name | Type | Description |
4800
+ | :------ | :------ | :------ |
4801
+ | `input` | `Object` | Permission check input with array of permissions |
4802
+ | `input.userId` | `string` | - |
4803
+ | `input.scope` | [`Scope`](modules.md#scope) | - |
4804
+ | `input.permissions` | (\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`)[] | - |
4805
+ | `input.pageId?` | `string` | - |
4806
+
4807
+ #### Returns
4808
+
4809
+ `Promise`\<`boolean`\>
4810
+
4811
+ Promise resolving to true if user has any permission
4812
+
4813
+ #### Defined in
4814
+
4815
+ [packages/core/src/rbac/api.ts:189](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/api.ts#L189)
4816
+
4817
+ ___
4818
+
4819
+ ### hasAllPermissions
4820
+
4821
+ ▸ **hasAllPermissions**(`input`): `Promise`\<`boolean`\>
4822
+
4823
+ Check if user has all of the specified permissions
4824
+
4825
+ #### Parameters
4826
+
4827
+ | Name | Type | Description |
4828
+ | :------ | :------ | :------ |
4829
+ | `input` | `Object` | Permission check input with array of permissions |
4830
+ | `input.userId` | `string` | - |
4831
+ | `input.scope` | [`Scope`](modules.md#scope) | - |
4832
+ | `input.permissions` | (\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`)[] | - |
4833
+ | `input.pageId?` | `string` | - |
4834
+
4835
+ #### Returns
4836
+
4837
+ `Promise`\<`boolean`\>
4838
+
4839
+ Promise resolving to true if user has all permissions
4840
+
4841
+ #### Defined in
4842
+
4843
+ [packages/core/src/rbac/api.ts:217](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/api.ts#L217)
4844
+
4845
+ ___
4846
+
4847
+ ### createAuditManager
4848
+
4849
+ ▸ **createAuditManager**(`supabase`): [`RBACAuditManager`](classes/RBACAuditManager.md)
4850
+
4851
+ Create an audit manager instance
4852
+
4853
+ #### Parameters
4854
+
4855
+ | Name | Type | Description |
4856
+ | :------ | :------ | :------ |
4857
+ | `supabase` | `default`\<`Database`, ``"public"``, ``"public"``, `never`, {}\> | Supabase client |
4858
+
4859
+ #### Returns
4860
+
4861
+ [`RBACAuditManager`](classes/RBACAuditManager.md)
4862
+
4863
+ RBACAuditManager instance
4864
+
4865
+ #### Defined in
4866
+
4867
+ [packages/core/src/rbac/audit.ts:300](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/audit.ts#L300)
4868
+
4869
+ ___
4870
+
4871
+ ### setGlobalAuditManager
4872
+
4873
+ ▸ **setGlobalAuditManager**(`manager`): `void`
4874
+
4875
+ Set the global audit manager
4876
+
4877
+ #### Parameters
4878
+
4879
+ | Name | Type | Description |
4880
+ | :------ | :------ | :------ |
4881
+ | `manager` | [`RBACAuditManager`](classes/RBACAuditManager.md) | Audit manager instance |
4882
+
4883
+ #### Returns
4884
+
4885
+ `void`
4886
+
4887
+ #### Defined in
4888
+
4889
+ [packages/core/src/rbac/audit.ts:316](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/audit.ts#L316)
4890
+
4891
+ ___
4892
+
4893
+ ### getGlobalAuditManager
4894
+
4895
+ ▸ **getGlobalAuditManager**(): [`RBACAuditManager`](classes/RBACAuditManager.md) \| ``null``
4896
+
4897
+ Get the global audit manager
4898
+
4899
+ #### Returns
4900
+
4901
+ [`RBACAuditManager`](classes/RBACAuditManager.md) \| ``null``
4902
+
4903
+ Global audit manager or null if not set
4904
+
4905
+ #### Defined in
4906
+
4907
+ [packages/core/src/rbac/audit.ts:325](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/audit.ts#L325)
4908
+
4909
+ ___
4910
+
4911
+ ### emitAuditEvent
4912
+
4913
+ ▸ **emitAuditEvent**(`event`): `Promise`\<`void`\>
4914
+
4915
+ Emit an audit event using the global audit manager
4916
+
4917
+ #### Parameters
4918
+
4919
+ | Name | Type | Description |
4920
+ | :------ | :------ | :------ |
4921
+ | `event` | `AuditEventPayload` | Audit event payload |
4922
+
4923
+ #### Returns
4924
+
4925
+ `Promise`\<`void`\>
4926
+
4927
+ #### Defined in
4928
+
4929
+ [packages/core/src/rbac/audit.ts:334](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/audit.ts#L334)
4930
+
4931
+ ___
4932
+
4933
+ ### EnhancedNavigationMenu
4934
+
4935
+ ▸ **EnhancedNavigationMenu**(`props`): `Element`
4936
+
4937
+ EnhancedNavigationMenu - Secure navigation menu with RBAC integration
4938
+
4939
+ This component provides a navigation menu that automatically filters items based on
4940
+ user permissions and enforces strict security controls.
4941
+
4942
+ #### Parameters
4943
+
4944
+ | Name | Type | Description |
4945
+ | :------ | :------ | :------ |
4946
+ | `props` | [`EnhancedNavigationMenuProps`](interfaces/EnhancedNavigationMenuProps.md) | Component props |
4947
+
4948
+ #### Returns
4949
+
4950
+ `Element`
4951
+
4952
+ React element with enhanced navigation menu
4953
+
4954
+ #### Defined in
4955
+
4956
+ [packages/core/src/rbac/components/EnhancedNavigationMenu.tsx:112](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/EnhancedNavigationMenu.tsx#L112)
4957
+
4958
+ ___
4959
+
4960
+ ### NavigationGuard
4961
+
4962
+ ▸ **NavigationGuard**(`props`): `Element`
4963
+
4964
+ NavigationGuard - Enforces navigation-level permissions
4965
+
4966
+ This component ensures that users can only access navigation items they have permission for.
4967
+ It integrates with the existing RBAC system and provides strict enforcement to
4968
+ prevent apps from bypassing navigation permission checks.
4969
+
4970
+ #### Parameters
4971
+
4972
+ | Name | Type | Description |
4973
+ | :------ | :------ | :------ |
4974
+ | `props` | [`NavigationGuardProps`](interfaces/NavigationGuardProps.md) | Component props |
4975
+
4976
+ #### Returns
4977
+
4978
+ `Element`
4979
+
4980
+ React element with navigation permission enforcement
4981
+
4982
+ #### Defined in
4983
+
4984
+ [packages/core/src/rbac/components/NavigationGuard.tsx:113](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/NavigationGuard.tsx#L113)
4985
+
4986
+ ___
4987
+
4988
+ ### NavigationProvider
4989
+
4990
+ ▸ **NavigationProvider**(`props`): `Element`
4991
+
4992
+ NavigationProvider - Manages navigation-level permissions across the app
4993
+
4994
+ This provider ensures that all navigation items are properly protected and provides
4995
+ centralized navigation permission management with strict enforcement.
4996
+
4997
+ #### Parameters
4998
+
4999
+ | Name | Type | Description |
5000
+ | :------ | :------ | :------ |
5001
+ | `props` | [`NavigationProviderProps`](interfaces/NavigationProviderProps.md) | Provider props |
5002
+
5003
+ #### Returns
5004
+
5005
+ `Element`
5006
+
5007
+ React element with navigation permission context
5008
+
5009
+ #### Defined in
5010
+
5011
+ [packages/core/src/rbac/components/NavigationProvider.tsx:164](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/NavigationProvider.tsx#L164)
5012
+
5013
+ ___
5014
+
5015
+ ### useNavigationPermissions
5016
+
5017
+ ▸ **useNavigationPermissions**(): [`NavigationContextType`](interfaces/NavigationContextType.md)
5018
+
5019
+ Hook to use navigation permission context
5020
+
5021
+ #### Returns
5022
+
5023
+ [`NavigationContextType`](interfaces/NavigationContextType.md)
5024
+
5025
+ Navigation permission context
5026
+
5027
+ **`Throws`**
5028
+
5029
+ Error if used outside of NavigationProvider
5030
+
5031
+ #### Defined in
5032
+
5033
+ [packages/core/src/rbac/components/NavigationProvider.tsx:304](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/NavigationProvider.tsx#L304)
5034
+
5035
+ ___
5036
+
5037
+ ### PagePermissionGuard
5038
+
5039
+ ▸ **PagePermissionGuard**(`props`): `Element`
5040
+
5041
+ PagePermissionGuard - Enforces page-level permissions
5042
+
5043
+ This component ensures that users can only access pages they have permission for.
5044
+ It integrates with the existing RBAC system and provides strict enforcement to
5045
+ prevent apps from bypassing permission checks.
5046
+
5047
+ #### Parameters
5048
+
5049
+ | Name | Type | Description |
5050
+ | :------ | :------ | :------ |
5051
+ | `props` | [`PagePermissionGuardProps`](interfaces/PagePermissionGuardProps.md) | Component props |
5052
+
5053
+ #### Returns
5054
+
5055
+ `Element`
5056
+
5057
+ React element with permission enforcement
5058
+
5059
+ #### Defined in
5060
+
5061
+ [packages/core/src/rbac/components/PagePermissionGuard.tsx:119](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/PagePermissionGuard.tsx#L119)
5062
+
5063
+ ___
5064
+
5065
+ ### PagePermissionProvider
5066
+
5067
+ ▸ **PagePermissionProvider**(`props`): `Element`
5068
+
5069
+ PagePermissionProvider - Manages page-level permissions across the app
5070
+
5071
+ This provider ensures that all pages are properly protected and provides
5072
+ centralized page permission management with strict enforcement.
5073
+
5074
+ #### Parameters
5075
+
5076
+ | Name | Type | Description |
5077
+ | :------ | :------ | :------ |
5078
+ | `props` | [`PagePermissionProviderProps`](interfaces/PagePermissionProviderProps.md) | Provider props |
5079
+
5080
+ #### Returns
5081
+
5082
+ `Element`
5083
+
5084
+ React element with page permission context
5085
+
5086
+ #### Defined in
5087
+
5088
+ [packages/core/src/rbac/components/PagePermissionProvider.tsx:125](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/PagePermissionProvider.tsx#L125)
5089
+
5090
+ ___
5091
+
5092
+ ### usePagePermissions
5093
+
5094
+ ▸ **usePagePermissions**(): [`PagePermissionContextType`](interfaces/PagePermissionContextType.md)
5095
+
5096
+ Hook to use page permission context
5097
+
5098
+ #### Returns
5099
+
5100
+ [`PagePermissionContextType`](interfaces/PagePermissionContextType.md)
5101
+
5102
+ Page permission context
5103
+
5104
+ **`Throws`**
5105
+
5106
+ Error if used outside of PagePermissionProvider
5107
+
5108
+ #### Defined in
5109
+
5110
+ [packages/core/src/rbac/components/PagePermissionProvider.tsx:264](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/PagePermissionProvider.tsx#L264)
5111
+
5112
+ ___
5113
+
5114
+ ### PermissionEnforcer
5115
+
5116
+ ▸ **PermissionEnforcer**(`props`): `Element`
5117
+
5118
+ PermissionEnforcer - Enforces permissions for operations
5119
+
5120
+ This component ensures that users can only perform operations they have permission for.
5121
+ It integrates with the existing RBAC system and provides strict enforcement to
5122
+ prevent apps from bypassing permission checks.
5123
+
5124
+ #### Parameters
5125
+
5126
+ | Name | Type | Description |
5127
+ | :------ | :------ | :------ |
5128
+ | `props` | [`PermissionEnforcerProps`](interfaces/PermissionEnforcerProps.md) | Component props |
5129
+
5130
+ #### Returns
5131
+
5132
+ `Element`
5133
+
5134
+ React element with permission enforcement
5135
+
5136
+ #### Defined in
5137
+
5138
+ [packages/core/src/rbac/components/PermissionEnforcer.tsx:117](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/PermissionEnforcer.tsx#L117)
5139
+
5140
+ ___
5141
+
5142
+ ### RoleBasedRouter
5143
+
5144
+ ▸ **RoleBasedRouter**(`props`): `Element`
5145
+
5146
+ RoleBasedRouter - Centralized routing control with role-based protection
5147
+
5148
+ This component ensures that all routes are properly protected and provides
5149
+ centralized routing control to prevent apps from bypassing route protection.
5150
+
5151
+ #### Parameters
5152
+
5153
+ | Name | Type | Description |
5154
+ | :------ | :------ | :------ |
5155
+ | `props` | [`RoleBasedRouterProps`](interfaces/RoleBasedRouterProps.md) | Router props |
5156
+
5157
+ #### Returns
5158
+
5159
+ `Element`
5160
+
5161
+ React element with role-based routing
5162
+
5163
+ #### Defined in
5164
+
5165
+ [packages/core/src/rbac/components/RoleBasedRouter.tsx:178](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/RoleBasedRouter.tsx#L178)
5166
+
5167
+ ___
5168
+
5169
+ ### useRoleBasedRouter
5170
+
5171
+ ▸ **useRoleBasedRouter**(): [`RoleBasedRouterContextType`](interfaces/RoleBasedRouterContextType.md)
5172
+
5173
+ Hook to use role-based router context
5174
+
5175
+ #### Returns
5176
+
5177
+ [`RoleBasedRouterContextType`](interfaces/RoleBasedRouterContextType.md)
5178
+
5179
+ Role-based router context
5180
+
5181
+ **`Throws`**
5182
+
5183
+ Error if used outside of RoleBasedRouter
5184
+
5185
+ #### Defined in
5186
+
5187
+ [packages/core/src/rbac/components/RoleBasedRouter.tsx:388](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/RoleBasedRouter.tsx#L388)
5188
+
5189
+ ___
5190
+
5191
+ ### SecureDataProvider
5192
+
5193
+ ▸ **SecureDataProvider**(`props`): `Element`
5194
+
5195
+ SecureDataProvider - Prevents direct Supabase access and enforces secure data patterns
5196
+
5197
+ This provider ensures that all data access goes through the secure RBAC system
5198
+ and prevents apps from bypassing data access controls.
5199
+
5200
+ #### Parameters
5201
+
5202
+ | Name | Type | Description |
5203
+ | :------ | :------ | :------ |
5204
+ | `props` | [`SecureDataProviderProps`](interfaces/SecureDataProviderProps.md) | Provider props |
5205
+
5206
+ #### Returns
5207
+
5208
+ `Element`
5209
+
5210
+ React element with secure data context
5211
+
5212
+ #### Defined in
5213
+
5214
+ [packages/core/src/rbac/components/SecureDataProvider.tsx:135](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/SecureDataProvider.tsx#L135)
5215
+
5216
+ ___
5217
+
5218
+ ### useSecureData
5219
+
5220
+ ▸ **useSecureData**(): [`SecureDataContextType`](interfaces/SecureDataContextType.md)
5221
+
5222
+ Hook to use secure data context
5223
+
5224
+ #### Returns
5225
+
5226
+ [`SecureDataContextType`](interfaces/SecureDataContextType.md)
5227
+
5228
+ Secure data context
5229
+
5230
+ **`Throws`**
5231
+
5232
+ Error if used outside of SecureDataProvider
5233
+
5234
+ #### Defined in
5235
+
5236
+ [packages/core/src/rbac/components/SecureDataProvider.tsx:309](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/components/SecureDataProvider.tsx#L309)
5237
+
5238
+ ___
5239
+
5240
+ ### createRBACConfig
5241
+
5242
+ ▸ **createRBACConfig**(`config`): [`RBACConfig`](interfaces/RBACConfig.md)
5243
+
5244
+ #### Parameters
5245
+
5246
+ | Name | Type |
5247
+ | :------ | :------ |
5248
+ | `config` | [`RBACConfig`](interfaces/RBACConfig.md) |
5249
+
5250
+ #### Returns
5251
+
5252
+ [`RBACConfig`](interfaces/RBACConfig.md)
5253
+
5254
+ #### Defined in
5255
+
5256
+ [packages/core/src/rbac/config.ts:110](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/config.ts#L110)
5257
+
5258
+ ___
5259
+
5260
+ ### getRBACConfig
5261
+
5262
+ ▸ **getRBACConfig**(): [`RBACConfig`](interfaces/RBACConfig.md) \| ``null``
5263
+
5264
+ #### Returns
5265
+
5266
+ [`RBACConfig`](interfaces/RBACConfig.md) \| ``null``
5267
+
5268
+ #### Defined in
5269
+
5270
+ [packages/core/src/rbac/config.ts:115](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/config.ts#L115)
5271
+
5272
+ ___
5273
+
5274
+ ### getRBACLogger
5275
+
5276
+ ▸ **getRBACLogger**(): [`RBACLogger`](interfaces/RBACLogger.md)
5277
+
5278
+ #### Returns
5279
+
5280
+ [`RBACLogger`](interfaces/RBACLogger.md)
5281
+
5282
+ #### Defined in
5283
+
5284
+ [packages/core/src/rbac/config.ts:119](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/config.ts#L119)
5285
+
5286
+ ___
5287
+
5288
+ ### isDebugMode
5289
+
5290
+ ▸ **isDebugMode**(): `boolean`
5291
+
5292
+ #### Returns
5293
+
5294
+ `boolean`
5295
+
5296
+ #### Defined in
5297
+
5298
+ [packages/core/src/rbac/config.ts:123](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/config.ts#L123)
5299
+
5300
+ ___
5301
+
5302
+ ### isDevelopmentMode
5303
+
5304
+ ▸ **isDevelopmentMode**(): `boolean`
5305
+
5306
+ #### Returns
5307
+
5308
+ `boolean`
5309
+
5310
+ #### Defined in
5311
+
5312
+ [packages/core/src/rbac/config.ts:127](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/config.ts#L127)
5313
+
5314
+ ___
5315
+
5316
+ ### createRBACEngine
5317
+
5318
+ ▸ **createRBACEngine**(`supabase`): [`RBACEngine`](classes/RBACEngine.md)
5319
+
5320
+ Create an RBAC engine instance
5321
+
5322
+ #### Parameters
5323
+
5324
+ | Name | Type | Description |
5325
+ | :------ | :------ | :------ |
5326
+ | `supabase` | `default`\<`Database`, ``"public"``, ``"public"``, `never`, {}\> | Supabase client |
5327
+
5328
+ #### Returns
5329
+
5330
+ [`RBACEngine`](classes/RBACEngine.md)
5331
+
5332
+ RBACEngine instance
5333
+
5334
+ #### Defined in
5335
+
5336
+ [packages/core/src/rbac/engine.ts:1024](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/engine.ts#L1024)
5337
+
5338
+ ___
5339
+
5340
+ ### usePermissions
5341
+
5342
+ ▸ **usePermissions**(`userId`, `scope`): `Object`
5343
+
5344
+ Hook to get user's permissions in a scope
5345
+
5346
+ #### Parameters
5347
+
5348
+ | Name | Type | Description |
5349
+ | :------ | :------ | :------ |
5350
+ | `userId` | `string` | User ID |
5351
+ | `scope` | [`Scope`](modules.md#scope) | Scope for permission checking |
5352
+
5353
+ #### Returns
5354
+
5355
+ `Object`
5356
+
5357
+ Permission state and methods
5358
+
5359
+ | Name | Type |
5360
+ | :------ | :------ |
5361
+ | `permissions` | [`PermissionMap`](modules.md#permissionmap) |
5362
+ | `isLoading` | `boolean` |
5363
+ | `error` | ``null`` \| `Error` |
5364
+ | `hasPermission` | (`permission`: \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`) => `boolean` |
5365
+ | `hasAnyPermission` | (`permissionList`: (\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`)[]) => `boolean` |
5366
+ | `hasAllPermissions` | (`permissionList`: (\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`)[]) => `boolean` |
5367
+ | `refetch` | () => `Promise`\<`void`\> |
5368
+
5369
+ **`Example`**
5370
+
5371
+ ```tsx
5372
+ function MyComponent() {
5373
+ const { permissions, isLoading, error } = usePermissions(userId, scope);
5374
+
5375
+ if (isLoading) return <div>Loading...</div>;
5376
+ if (error) return <div>Error: {error.message}</div>;
5377
+
5378
+ return (
5379
+ <div>
5380
+ {permissions['read:users'] && <UserList />}
5381
+ {permissions['create:users'] && <CreateUserButton />}
5382
+ </div>
5383
+ );
5384
+ }
5385
+ ```
5386
+
5387
+ #### Defined in
5388
+
5389
+ [packages/core/src/rbac/hooks/usePermissions.ts:49](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/usePermissions.ts#L49)
5390
+
5391
+ ___
5392
+
5393
+ ### useCan
5394
+
5395
+ ▸ **useCan**(`userId`, `scope`, `permission`, `pageId?`, `useCache?`): `Object`
5396
+
5397
+ Hook to check if user can perform an action
5398
+
5399
+ #### Parameters
5400
+
5401
+ | Name | Type | Default value | Description |
5402
+ | :------ | :------ | :------ | :------ |
5403
+ | `userId` | `string` | `undefined` | User ID |
5404
+ | `scope` | [`Scope`](modules.md#scope) | `undefined` | Scope for permission checking |
5405
+ | `permission` | \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\` | `undefined` | Permission to check |
5406
+ | `pageId?` | `string` | `undefined` | Optional page ID |
5407
+ | `useCache` | `boolean` | `true` | Whether to use cached results |
5408
+
5409
+ #### Returns
5410
+
5411
+ `Object`
5412
+
5413
+ Permission check state and methods
5414
+
5415
+ | Name | Type |
5416
+ | :------ | :------ |
5417
+ | `can` | `boolean` |
5418
+ | `isLoading` | `boolean` |
5419
+ | `error` | ``null`` \| `Error` |
5420
+ | `refetch` | () => `Promise`\<`void`\> |
5421
+
5422
+ **`Example`**
5423
+
5424
+ ```tsx
5425
+ function MyComponent() {
5426
+ const { can, isLoading, error } = useCan(userId, scope, 'read:users');
5427
+
5428
+ if (isLoading) return <div>Checking permission...</div>;
5429
+ if (error) return <div>Error: {error.message}</div>;
5430
+
5431
+ return can ? <UserList /> : <div>Access denied</div>;
5432
+ }
5433
+ ```
5434
+
5435
+ #### Defined in
5436
+
5437
+ [packages/core/src/rbac/hooks/usePermissions.ts:123](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/usePermissions.ts#L123)
5438
+
5439
+ ___
5440
+
5441
+ ### useAccessLevel
5442
+
5443
+ ▸ **useAccessLevel**(`userId`, `scope`): `Object`
5444
+
5445
+ Hook to get user's access level in a scope
5446
+
5447
+ #### Parameters
5448
+
5449
+ | Name | Type | Description |
5450
+ | :------ | :------ | :------ |
5451
+ | `userId` | `string` | User ID |
5452
+ | `scope` | [`Scope`](modules.md#scope) | Scope for access level checking |
5453
+
5454
+ #### Returns
5455
+
5456
+ `Object`
5457
+
5458
+ Access level state and methods
5459
+
5460
+ | Name | Type |
5461
+ | :------ | :------ |
5462
+ | `accessLevel` | [`AccessLevel`](modules.md#accesslevel) |
5463
+ | `isLoading` | `boolean` |
5464
+ | `error` | `Error` \| ``null`` |
5465
+ | `refetch` | () => `Promise`\<`void`\> |
5466
+
5467
+ **`Example`**
5468
+
5469
+ ```tsx
5470
+ function MyComponent() {
5471
+ const { accessLevel, isLoading, error } = useAccessLevel(userId, scope);
5472
+
5473
+ if (isLoading) return <div>Loading access level...</div>;
5474
+ if (error) return <div>Error: {error.message}</div>;
5475
+
5476
+ return (
5477
+ <div>
5478
+ Access Level: {accessLevel}
5479
+ {accessLevel >= AccessLevel.ADMIN && <AdminPanel />}
5480
+ </div>
5481
+ );
5482
+ }
5483
+ ```
5484
+
5485
+ #### Defined in
5486
+
5487
+ [packages/core/src/rbac/hooks/usePermissions.ts:194](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/usePermissions.ts#L194)
5488
+
5489
+ ___
5490
+
5491
+ ### useMultiplePermissions
5492
+
5493
+ ▸ **useMultiplePermissions**(`userId`, `scope`, `permissions`, `useCache?`): `Object`
5494
+
5495
+ Hook to check multiple permissions at once
5496
+
5497
+ #### Parameters
5498
+
5499
+ | Name | Type | Default value | Description |
5500
+ | :------ | :------ | :------ | :------ |
5501
+ | `userId` | `string` | `undefined` | User ID |
5502
+ | `scope` | [`Scope`](modules.md#scope) | `undefined` | Scope for permission checking |
5503
+ | `permissions` | (\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`)[] | `undefined` | Array of permissions to check |
5504
+ | `useCache` | `boolean` | `true` | Whether to use cached results |
5505
+
5506
+ #### Returns
5507
+
5508
+ `Object`
5509
+
5510
+ Multiple permission check results
5511
+
5512
+ | Name | Type |
5513
+ | :------ | :------ |
5514
+ | `results` | `Record`\<[`Permission`](modules.md#permission), `boolean`\> |
5515
+ | `isLoading` | `boolean` |
5516
+ | `error` | `Error` \| ``null`` |
5517
+ | `refetch` | () => `Promise`\<`void`\> |
5518
+
5519
+ **`Example`**
5520
+
5521
+ ```tsx
5522
+ function MyComponent() {
5523
+ const { results, isLoading, error } = useMultiplePermissions(
5524
+ userId,
5525
+ scope,
5526
+ ['read:users', 'create:users', 'update:users']
5527
+ );
5528
+
5529
+ if (isLoading) return <div>Checking permissions...</div>;
5530
+ if (error) return <div>Error: {error.message}</div>;
5531
+
5532
+ return (
5533
+ <div>
5534
+ {results['read:users'] && <UserList />}
5535
+ {results['create:users'] && <CreateUserButton />}
5536
+ {results['update:users'] && <EditUserButton />}
5537
+ </div>
5538
+ );
5539
+ }
5540
+ ```
5541
+
5542
+ #### Defined in
5543
+
5544
+ [packages/core/src/rbac/hooks/usePermissions.ts:268](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/usePermissions.ts#L268)
5545
+
5546
+ ___
5547
+
5548
+ ### useHasAnyPermission
5549
+
5550
+ ▸ **useHasAnyPermission**(`userId`, `scope`, `permissions`, `useCache?`): `Object`
5551
+
5552
+ Hook to check if user has any of the specified permissions
5553
+
5554
+ #### Parameters
5555
+
5556
+ | Name | Type | Default value | Description |
5557
+ | :------ | :------ | :------ | :------ |
5558
+ | `userId` | `string` | `undefined` | User ID |
5559
+ | `scope` | [`Scope`](modules.md#scope) | `undefined` | Scope for permission checking |
5560
+ | `permissions` | (\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`)[] | `undefined` | Array of permissions to check |
5561
+ | `useCache` | `boolean` | `true` | Whether to use cached results |
5562
+
5563
+ #### Returns
5564
+
5565
+ `Object`
5566
+
5567
+ Whether user has any of the permissions
5568
+
5569
+ | Name | Type |
5570
+ | :------ | :------ |
5571
+ | `hasAny` | `boolean` |
5572
+ | `isLoading` | `boolean` |
5573
+ | `error` | `Error` \| ``null`` |
5574
+ | `refetch` | () => `Promise`\<`void`\> |
5575
+
5576
+ **`Example`**
5577
+
5578
+ ```tsx
5579
+ function MyComponent() {
5580
+ const { hasAny, isLoading, error } = useHasAnyPermission(
5581
+ userId,
5582
+ scope,
5583
+ ['read:users', 'create:users']
5584
+ );
5585
+
5586
+ if (isLoading) return <div>Checking permissions...</div>;
5587
+ if (error) return <div>Error: {error.message}</div>;
5588
+
5589
+ return hasAny ? <UserManagementPanel /> : <div>No user permissions</div>;
5590
+ }
5591
+ ```
5592
+
5593
+ #### Defined in
5594
+
5595
+ [packages/core/src/rbac/hooks/usePermissions.ts:350](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/usePermissions.ts#L350)
5596
+
5597
+ ___
5598
+
5599
+ ### useHasAllPermissions
5600
+
5601
+ ▸ **useHasAllPermissions**(`userId`, `scope`, `permissions`, `useCache?`): `Object`
5602
+
5603
+ Hook to check if user has all of the specified permissions
5604
+
5605
+ #### Parameters
5606
+
5607
+ | Name | Type | Default value | Description |
5608
+ | :------ | :------ | :------ | :------ |
5609
+ | `userId` | `string` | `undefined` | User ID |
5610
+ | `scope` | [`Scope`](modules.md#scope) | `undefined` | Scope for permission checking |
5611
+ | `permissions` | (\`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`)[] | `undefined` | Array of permissions to check |
5612
+ | `useCache` | `boolean` | `true` | Whether to use cached results |
5613
+
5614
+ #### Returns
5615
+
5616
+ `Object`
5617
+
5618
+ Whether user has all of the permissions
5619
+
5620
+ | Name | Type |
5621
+ | :------ | :------ |
5622
+ | `hasAll` | `boolean` |
5623
+ | `isLoading` | `boolean` |
5624
+ | `error` | `Error` \| ``null`` |
5625
+ | `refetch` | () => `Promise`\<`void`\> |
5626
+
5627
+ **`Example`**
5628
+
5629
+ ```tsx
5630
+ function MyComponent() {
5631
+ const { hasAll, isLoading, error } = useHasAllPermissions(
5632
+ userId,
5633
+ scope,
5634
+ ['read:users', 'create:users', 'update:users']
5635
+ );
5636
+
5637
+ if (isLoading) return <div>Checking permissions...</div>;
5638
+ if (error) return <div>Error: {error.message}</div>;
5639
+
5640
+ return hasAll ? <FullUserManagementPanel /> : <div>Insufficient permissions</div>;
5641
+ }
5642
+ ```
5643
+
5644
+ #### Defined in
5645
+
5646
+ [packages/core/src/rbac/hooks/usePermissions.ts:435](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/usePermissions.ts#L435)
5647
+
5648
+ ___
5649
+
5650
+ ### useCachedPermissions
5651
+
5652
+ ▸ **useCachedPermissions**(`userId`, `scope`): `Object`
5653
+
5654
+ Hook to get cached permissions with TTL management
5655
+
5656
+ #### Parameters
5657
+
5658
+ | Name | Type | Description |
5659
+ | :------ | :------ | :------ |
5660
+ | `userId` | `string` | User ID |
5661
+ | `scope` | [`Scope`](modules.md#scope) | Scope for permission checking |
5662
+
5663
+ #### Returns
5664
+
5665
+ `Object`
5666
+
5667
+ Cached permission state and methods
5668
+
5669
+ | Name | Type |
5670
+ | :------ | :------ |
5671
+ | `permissions` | [`PermissionMap`](modules.md#permissionmap) |
5672
+ | `isLoading` | `boolean` |
5673
+ | `error` | `Error` \| ``null`` |
5674
+ | `invalidateCache` | () => `void` |
5675
+ | `refetch` | () => `Promise`\<`void`\> |
5676
+
5677
+ **`Example`**
5678
+
5679
+ ```tsx
5680
+ function MyComponent() {
5681
+ const { permissions, isLoading, error, invalidateCache } = useCachedPermissions(userId, scope);
5682
+
5683
+ if (isLoading) return <div>Loading cached permissions...</div>;
5684
+ if (error) return <div>Error: {error.message}</div>;
5685
+
5686
+ return (
5687
+ <div>
5688
+ {permissions['read:users'] && <UserList />}
5689
+ <button onClick={invalidateCache}>Refresh Permissions</button>
5690
+ </div>
5691
+ );
5692
+ }
5693
+ ```
5694
+
5695
+ #### Defined in
5696
+
5697
+ [packages/core/src/rbac/hooks/usePermissions.ts:519](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/usePermissions.ts#L519)
5698
+
5699
+ ___
5700
+
5701
+ ### useRBAC
5702
+
5703
+ ▸ **useRBAC**(`pageId?`): `UserRBACContext`
5704
+
5705
+ #### Parameters
5706
+
5707
+ | Name | Type |
5708
+ | :------ | :------ |
5709
+ | `pageId?` | `string` |
5710
+
5711
+ #### Returns
5712
+
5713
+ `UserRBACContext`
5714
+
5715
+ #### Defined in
5716
+
5717
+ [packages/core/src/rbac/hooks/useRBAC.ts:82](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useRBAC.ts#L82)
5718
+
5719
+ ___
5720
+
5721
+ ### isValidPermission
5722
+
5723
+ ▸ **isValidPermission**(`permission`): permission is \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`
5724
+
5725
+ Validate that a permission string is properly formatted
5726
+
5727
+ #### Parameters
5728
+
5729
+ | Name | Type | Description |
5730
+ | :------ | :------ | :------ |
5731
+ | `permission` | `string` | Permission string to validate |
5732
+
5733
+ #### Returns
5734
+
5735
+ permission is \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\` \| \`manage:$\{string}\`
5736
+
5737
+ True if valid, false otherwise
5738
+
5739
+ #### Defined in
5740
+
5741
+ [packages/core/src/rbac/permissions.ts:249](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/permissions.ts#L249)
5742
+
5743
+ ___
5744
+
5745
+ ### getPermissionsForRole
5746
+
5747
+ ▸ **getPermissionsForRole**(`role`): [`Permission`](modules.md#permission)[]
5748
+
5749
+ Get all permissions for a role
5750
+
5751
+ #### Parameters
5752
+
5753
+ | Name | Type | Description |
5754
+ | :------ | :------ | :------ |
5755
+ | `role` | `string` | Role name |
5756
+
5757
+ #### Returns
5758
+
5759
+ [`Permission`](modules.md#permission)[]
5760
+
5761
+ Array of permissions for the role
5762
+
5763
+ #### Defined in
5764
+
5765
+ [packages/core/src/rbac/permissions.ts:263](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/permissions.ts#L263)
5766
+
5767
+ ___
5768
+
5769
+ ### useRBACProvider
5770
+
5771
+ ▸ **useRBACProvider**(): [`RBACContextType`](interfaces/RBACContextType.md)
5772
+
5773
+ #### Returns
5774
+
5775
+ [`RBACContextType`](interfaces/RBACContextType.md)
5776
+
5777
+ #### Defined in
5778
+
5779
+ [packages/core/src/rbac/providers/RBACProvider.tsx:74](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/providers/RBACProvider.tsx#L74)
5780
+
5781
+ ___
5782
+
5783
+ ### RBACProvider
5784
+
5785
+ ▸ **RBACProvider**(`«destructured»`): `Element`
5786
+
5787
+ #### Parameters
5788
+
5789
+ | Name | Type |
5790
+ | :------ | :------ |
5791
+ | `«destructured»` | [`RBACProviderProps`](interfaces/RBACProviderProps.md) |
5792
+
5793
+ #### Returns
5794
+
5795
+ `Element`
5796
+
5797
+ #### Defined in
5798
+
5799
+ [packages/core/src/rbac/providers/RBACProvider.tsx:183](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/providers/RBACProvider.tsx#L183)
5800
+
5801
+ ___
5802
+
5803
+ ### createSecureClient
5804
+
5805
+ ▸ **createSecureClient**(`supabaseUrl`, `supabaseKey`, `organisationId`, `eventId?`, `appId?`): [`SecureSupabaseClient`](classes/SecureSupabaseClient.md)
5806
+
5807
+ Create a secure Supabase client with organisation context
5808
+
5809
+ #### Parameters
5810
+
5811
+ | Name | Type | Description |
5812
+ | :------ | :------ | :------ |
5813
+ | `supabaseUrl` | `string` | Supabase project URL |
5814
+ | `supabaseKey` | `string` | Supabase anon key |
5815
+ | `organisationId` | `string` | Required organisation ID |
5816
+ | `eventId?` | `string` | Optional event ID |
5817
+ | `appId?` | `string` | Optional app ID |
5818
+
5819
+ #### Returns
5820
+
5821
+ [`SecureSupabaseClient`](classes/SecureSupabaseClient.md)
5822
+
5823
+ SecureSupabaseClient instance
5824
+
5825
+ **`Example`**
5826
+
5827
+ ```typescript
5828
+ const client = createSecureClient(
5829
+ 'https://your-project.supabase.co',
5830
+ 'your-anon-key',
5831
+ 'org-123',
5832
+ 'event-456',
5833
+ 'app-789'
5834
+ );
5835
+ ```
5836
+
5837
+ #### Defined in
5838
+
5839
+ [packages/core/src/rbac/secureClient.ts:216](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/secureClient.ts#L216)
5840
+
5841
+ ___
5842
+
5843
+ ### fromSupabaseClient
5844
+
5845
+ ▸ **fromSupabaseClient**(`client`, `organisationId`, `eventId?`, `appId?`): [`SecureSupabaseClient`](classes/SecureSupabaseClient.md)
5846
+
5847
+ Create a secure client from an existing Supabase client
5848
+
5849
+ #### Parameters
5850
+
5851
+ | Name | Type | Description |
5852
+ | :------ | :------ | :------ |
5853
+ | `client` | `default`\<`Database`, ``"public"``, ``"public"``, `never`, {}\> | Existing Supabase client |
5854
+ | `organisationId` | `string` | Required organisation ID |
5855
+ | `eventId?` | `string` | Optional event ID |
5856
+ | `appId?` | `string` | Optional app ID |
5857
+
5858
+ #### Returns
5859
+
5860
+ [`SecureSupabaseClient`](classes/SecureSupabaseClient.md)
5861
+
5862
+ SecureSupabaseClient instance
5863
+
5864
+ #### Defined in
5865
+
5866
+ [packages/core/src/rbac/secureClient.ts:235](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/secureClient.ts#L235)
5867
+
5868
+ ___
5869
+
3629
5870
  ### getStylePath
3630
5871
 
3631
5872
  ▸ **getStylePath**(`style`): `string`