@jmruthers/pace-core 0.6.2 → 0.6.4
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.
- package/CHANGELOG.md +45 -0
- package/cursor-rules/00-pace-core-compliance.mdc +34 -2
- package/dist/{AuthService-BPvc3Ka0.d.ts → AuthService-Cb34EQs3.d.ts} +9 -1
- package/dist/{DataTable-TPTKCX4D.js → DataTable-E7YQZD7D.js} +9 -8
- package/dist/{PublicPageProvider-DC6kCaqf.d.ts → PublicPageProvider-DEMpysFR.d.ts} +45 -67
- package/dist/{UnifiedAuthProvider-CVcTjx-d.d.ts → UnifiedAuthProvider-CKvHP1MK.d.ts} +1 -8
- package/dist/{UnifiedAuthProvider-CH6Z342H.js → UnifiedAuthProvider-QPXO24B4.js} +5 -4
- package/dist/{api-MVVQZLJI.js → api-6LVZTHDS.js} +10 -10
- package/dist/{audit-B5P6FFIR.js → audit-V53FV5AG.js} +2 -2
- package/dist/chunk-36LVWXB2.js +227 -0
- package/dist/chunk-36LVWXB2.js.map +1 -0
- package/dist/{chunk-24UVZUZG.js → chunk-3LPHPB62.js} +129 -387
- package/dist/chunk-3LPHPB62.js.map +1 -0
- package/dist/{chunk-2UOI2FG5.js → chunk-5EC5MEWX.js} +4 -4
- package/dist/{chunk-3XC4CPTD.js → chunk-7JPAB3T5.js} +244 -5727
- package/dist/chunk-7JPAB3T5.js.map +1 -0
- package/dist/{chunk-6J4GEEJR.js → chunk-ATKZM7RX.js} +53 -27
- package/dist/chunk-ATKZM7RX.js.map +1 -0
- package/dist/{chunk-EHMR7VYL.js → chunk-AVMLPIM7.js} +443 -189
- package/dist/chunk-AVMLPIM7.js.map +1 -0
- package/dist/chunk-DGUM43GV.js +11 -0
- package/dist/{chunk-NECFR5MM.js → chunk-I6DAQMWX.js} +575 -647
- package/dist/chunk-I6DAQMWX.js.map +1 -0
- package/dist/{chunk-F2IMUDXZ.js → chunk-M7MPQISP.js} +2 -2
- package/dist/{chunk-XWQCNGTQ.js → chunk-NN6WWZ5U.js} +173 -79
- package/dist/chunk-NN6WWZ5U.js.map +1 -0
- package/dist/{chunk-MMZ7JXPU.js → chunk-OEWDTMG7.js} +13 -21
- package/dist/{chunk-MMZ7JXPU.js.map → chunk-OEWDTMG7.js.map} +1 -1
- package/dist/{chunk-SFZUDBL5.js → chunk-YKRAFF5K.js} +70 -56
- package/dist/chunk-YKRAFF5K.js.map +1 -0
- package/dist/components.d.ts +2 -2
- package/dist/components.js +12 -13
- package/dist/contextValidator-OOPCLPZW.js +9 -0
- package/dist/contextValidator-OOPCLPZW.js.map +1 -0
- package/dist/eslint-rules/pace-core-compliance.cjs +106 -0
- package/dist/hooks.d.ts +2 -2
- package/dist/hooks.js +7 -6
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.js +21 -16
- package/dist/index.js.map +1 -1
- package/dist/providers.d.ts +3 -3
- package/dist/providers.js +4 -3
- package/dist/rbac/index.d.ts +67 -27
- package/dist/rbac/index.js +15 -8
- package/dist/styles/index.js +1 -1
- package/dist/theming/runtime.js +1 -1
- package/dist/types.js +1 -1
- package/dist/{usePublicRouteParams-1oMokgLF.d.ts → usePublicRouteParams-i3qtoBgg.d.ts} +7 -16
- package/dist/utils.js +5 -7
- package/dist/utils.js.map +1 -1
- package/docs/api/README.md +14 -16
- package/docs/api/modules.md +3796 -2513
- package/docs/components/context-selector.md +126 -0
- package/docs/migration/RBAC_SCOPE_MIGRATION.md +385 -0
- package/docs/pace-mint-fix-auto-selection.md +218 -0
- package/docs/pace-mint-rbac-setup.md +391 -0
- package/docs/rbac/secure-client-protection.md +330 -0
- package/package.json +10 -5
- package/scripts/audit/core/checks/compliance.cjs +72 -0
- package/scripts/audit/core/checks/dependencies.cjs +568 -28
- package/scripts/audit/core/checks/documentation.cjs +68 -3
- package/scripts/audit/core/checks/environment.cjs +2 -14
- package/scripts/audit/core/checks/error-handling.cjs +47 -6
- package/src/components/ContextSelector/ContextSelector.tsx +384 -0
- package/src/components/ContextSelector/index.ts +3 -0
- package/src/components/DataTable/components/RowComponent.tsx +19 -19
- package/src/components/DataTable/components/UnifiedTableBody.tsx +2 -2
- package/src/components/DataTable/hooks/useDataTablePermissions.ts +8 -6
- package/src/components/Dialog/Dialog.tsx +29 -1
- package/src/components/FileDisplay/FileDisplay.tsx +42 -10
- package/src/components/Header/Header.test.tsx +43 -73
- package/src/components/Header/Header.tsx +44 -45
- package/src/components/PaceAppLayout/PaceAppLayout.integration.test.tsx +10 -19
- package/src/components/PaceAppLayout/PaceAppLayout.performance.test.tsx +2 -2
- package/src/components/PaceAppLayout/PaceAppLayout.security.test.tsx +5 -5
- package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +9 -9
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +157 -36
- package/src/components/PaceAppLayout/README.md +14 -17
- package/src/components/PaceAppLayout/test-setup.tsx +2 -2
- package/src/components/index.ts +5 -5
- package/src/eslint-rules/pace-core-compliance.cjs +106 -0
- package/src/hooks/__tests__/useAppConfig.unit.test.ts +4 -98
- package/src/hooks/useAppConfig.ts +15 -30
- package/src/hooks/useFileDisplay.ts +77 -50
- package/src/index.ts +4 -5
- package/src/providers/services/AuthServiceProvider.tsx +17 -7
- package/src/providers/services/EventServiceProvider.tsx +33 -5
- package/src/providers/services/UnifiedAuthProvider.tsx +90 -134
- package/src/rbac/__tests__/adapters.comprehensive.test.tsx +1 -1
- package/src/rbac/adapters.tsx +2 -2
- package/src/rbac/api.test.ts +59 -51
- package/src/rbac/api.ts +178 -132
- package/src/rbac/components/PagePermissionGuard.tsx +38 -10
- package/src/rbac/hooks/__tests__/useSecureSupabase.test.ts +32 -21
- package/src/rbac/hooks/permissions/useAccessLevel.ts +1 -1
- package/src/rbac/hooks/permissions/useCan.ts +41 -11
- package/src/rbac/hooks/permissions/useHasAllPermissions.ts +1 -1
- package/src/rbac/hooks/permissions/useHasAnyPermission.ts +1 -1
- package/src/rbac/hooks/permissions/useMultiplePermissions.ts +1 -1
- package/src/rbac/hooks/useCan.test.ts +0 -9
- package/src/rbac/hooks/useRBAC.test.ts +1 -5
- package/src/rbac/hooks/useRBAC.ts +36 -37
- package/src/rbac/hooks/useResolvedScope.test.ts +120 -35
- package/src/rbac/hooks/useResolvedScope.ts +35 -40
- package/src/rbac/hooks/useSecureSupabase.ts +7 -7
- package/src/rbac/index.ts +7 -0
- package/src/rbac/secureClient.test.ts +22 -18
- package/src/rbac/secureClient.ts +103 -16
- package/src/rbac/security.ts +0 -17
- package/src/rbac/types.ts +1 -0
- package/src/rbac/utils/__tests__/contextValidator.test.ts +64 -86
- package/src/rbac/utils/clientSecurity.ts +93 -0
- package/src/rbac/utils/contextValidator.ts +77 -168
- package/src/services/AuthService.ts +39 -7
- package/src/services/EventService.ts +285 -56
- package/src/services/OrganisationService.ts +81 -14
- package/src/services/__tests__/EventService.test.ts +1 -2
- package/src/services/base/BaseService.ts +3 -0
- package/src/utils/dynamic/dynamicUtils.ts +7 -4
- package/dist/chunk-24UVZUZG.js.map +0 -1
- package/dist/chunk-3XC4CPTD.js.map +0 -1
- package/dist/chunk-6J4GEEJR.js.map +0 -1
- package/dist/chunk-7D4SUZUM.js +0 -38
- package/dist/chunk-EHMR7VYL.js.map +0 -1
- package/dist/chunk-NECFR5MM.js.map +0 -1
- package/dist/chunk-SFZUDBL5.js.map +0 -1
- package/dist/chunk-XWQCNGTQ.js.map +0 -1
- package/docs/api/classes/ColumnFactory.md +0 -243
- package/docs/api/classes/InvalidScopeError.md +0 -73
- package/docs/api/classes/Logger.md +0 -178
- package/docs/api/classes/MissingUserContextError.md +0 -66
- package/docs/api/classes/OrganisationContextRequiredError.md +0 -66
- package/docs/api/classes/PermissionDeniedError.md +0 -73
- package/docs/api/classes/RBACAuditManager.md +0 -297
- package/docs/api/classes/RBACCache.md +0 -322
- package/docs/api/classes/RBACEngine.md +0 -171
- package/docs/api/classes/RBACError.md +0 -76
- package/docs/api/classes/RBACNotInitializedError.md +0 -66
- package/docs/api/classes/SecureSupabaseClient.md +0 -163
- package/docs/api/classes/StorageUtils.md +0 -328
- package/docs/api/enums/FileCategory.md +0 -184
- package/docs/api/enums/LogLevel.md +0 -54
- package/docs/api/enums/RBACErrorCode.md +0 -228
- package/docs/api/enums/RPCFunction.md +0 -118
- package/docs/api/interfaces/AddressFieldProps.md +0 -241
- package/docs/api/interfaces/AddressFieldRef.md +0 -94
- package/docs/api/interfaces/AggregateConfig.md +0 -43
- package/docs/api/interfaces/AutocompleteOptions.md +0 -75
- package/docs/api/interfaces/AvatarProps.md +0 -128
- package/docs/api/interfaces/BadgeProps.md +0 -34
- package/docs/api/interfaces/ButtonProps.md +0 -56
- package/docs/api/interfaces/CalendarProps.md +0 -73
- package/docs/api/interfaces/CardProps.md +0 -69
- package/docs/api/interfaces/ColorPalette.md +0 -7
- package/docs/api/interfaces/ColorShade.md +0 -66
- package/docs/api/interfaces/ComplianceResult.md +0 -30
- package/docs/api/interfaces/DataAccessRecord.md +0 -96
- package/docs/api/interfaces/DataRecord.md +0 -11
- package/docs/api/interfaces/DataTableAction.md +0 -252
- package/docs/api/interfaces/DataTableColumn.md +0 -504
- package/docs/api/interfaces/DataTableProps.md +0 -625
- package/docs/api/interfaces/DataTableToolbarButton.md +0 -96
- package/docs/api/interfaces/DatabaseComplianceResult.md +0 -85
- package/docs/api/interfaces/DatabaseIssue.md +0 -41
- package/docs/api/interfaces/EmptyStateConfig.md +0 -61
- package/docs/api/interfaces/EnhancedNavigationMenuProps.md +0 -235
- package/docs/api/interfaces/ErrorBoundaryProps.md +0 -147
- package/docs/api/interfaces/ErrorBoundaryProviderProps.md +0 -36
- package/docs/api/interfaces/ErrorBoundaryState.md +0 -75
- package/docs/api/interfaces/EventAppRoleData.md +0 -71
- package/docs/api/interfaces/ExportColumn.md +0 -90
- package/docs/api/interfaces/ExportOptions.md +0 -126
- package/docs/api/interfaces/FileDisplayProps.md +0 -249
- package/docs/api/interfaces/FileMetadata.md +0 -129
- package/docs/api/interfaces/FileReference.md +0 -118
- package/docs/api/interfaces/FileSizeLimits.md +0 -7
- package/docs/api/interfaces/FileUploadOptions.md +0 -139
- package/docs/api/interfaces/FileUploadProps.md +0 -296
- package/docs/api/interfaces/FooterProps.md +0 -107
- package/docs/api/interfaces/FormFieldProps.md +0 -166
- package/docs/api/interfaces/FormProps.md +0 -113
- package/docs/api/interfaces/GrantEventAppRoleParams.md +0 -122
- package/docs/api/interfaces/InactivityWarningModalProps.md +0 -115
- package/docs/api/interfaces/InputProps.md +0 -56
- package/docs/api/interfaces/LabelProps.md +0 -107
- package/docs/api/interfaces/LoggerConfig.md +0 -62
- package/docs/api/interfaces/LoginFormProps.md +0 -187
- package/docs/api/interfaces/NavigationAccessRecord.md +0 -107
- package/docs/api/interfaces/NavigationContextType.md +0 -164
- package/docs/api/interfaces/NavigationGuardProps.md +0 -139
- package/docs/api/interfaces/NavigationItem.md +0 -120
- package/docs/api/interfaces/NavigationMenuProps.md +0 -221
- package/docs/api/interfaces/NavigationProviderProps.md +0 -117
- package/docs/api/interfaces/Organisation.md +0 -140
- package/docs/api/interfaces/OrganisationContextType.md +0 -388
- package/docs/api/interfaces/OrganisationMembership.md +0 -140
- package/docs/api/interfaces/OrganisationProviderProps.md +0 -76
- package/docs/api/interfaces/OrganisationSecurityError.md +0 -62
- package/docs/api/interfaces/PaceAppLayoutProps.md +0 -409
- package/docs/api/interfaces/PaceLoginPageProps.md +0 -49
- package/docs/api/interfaces/PageAccessRecord.md +0 -85
- package/docs/api/interfaces/PagePermissionContextType.md +0 -140
- package/docs/api/interfaces/PagePermissionGuardProps.md +0 -153
- package/docs/api/interfaces/PagePermissionProviderProps.md +0 -119
- package/docs/api/interfaces/PaletteData.md +0 -41
- package/docs/api/interfaces/ParsedAddress.md +0 -120
- package/docs/api/interfaces/PermissionEnforcerProps.md +0 -153
- package/docs/api/interfaces/ProgressProps.md +0 -42
- package/docs/api/interfaces/ProtectedRouteProps.md +0 -78
- package/docs/api/interfaces/PublicPageFooterProps.md +0 -112
- package/docs/api/interfaces/PublicPageHeaderProps.md +0 -125
- package/docs/api/interfaces/PublicPageLayoutProps.md +0 -185
- package/docs/api/interfaces/QuickFix.md +0 -52
- package/docs/api/interfaces/RBACAccessValidateParams.md +0 -52
- package/docs/api/interfaces/RBACAccessValidateResult.md +0 -41
- package/docs/api/interfaces/RBACAuditLogParams.md +0 -85
- package/docs/api/interfaces/RBACAuditLogResult.md +0 -52
- package/docs/api/interfaces/RBACConfig.md +0 -133
- package/docs/api/interfaces/RBACContext.md +0 -52
- package/docs/api/interfaces/RBACLogger.md +0 -112
- package/docs/api/interfaces/RBACPageAccessCheckParams.md +0 -74
- package/docs/api/interfaces/RBACPerformanceMetrics.md +0 -138
- package/docs/api/interfaces/RBACPermissionCheckParams.md +0 -74
- package/docs/api/interfaces/RBACPermissionCheckResult.md +0 -52
- package/docs/api/interfaces/RBACPermissionsGetParams.md +0 -63
- package/docs/api/interfaces/RBACPermissionsGetResult.md +0 -63
- package/docs/api/interfaces/RBACResult.md +0 -58
- package/docs/api/interfaces/RBACRoleGrantParams.md +0 -63
- package/docs/api/interfaces/RBACRoleGrantResult.md +0 -52
- package/docs/api/interfaces/RBACRoleRevokeParams.md +0 -63
- package/docs/api/interfaces/RBACRoleRevokeResult.md +0 -52
- package/docs/api/interfaces/RBACRoleValidateParams.md +0 -52
- package/docs/api/interfaces/RBACRoleValidateResult.md +0 -63
- package/docs/api/interfaces/RBACRolesListParams.md +0 -52
- package/docs/api/interfaces/RBACRolesListResult.md +0 -74
- package/docs/api/interfaces/RBACSessionTrackParams.md +0 -74
- package/docs/api/interfaces/RBACSessionTrackResult.md +0 -52
- package/docs/api/interfaces/ResourcePermissions.md +0 -155
- package/docs/api/interfaces/RevokeEventAppRoleParams.md +0 -100
- package/docs/api/interfaces/RoleBasedRouterContextType.md +0 -151
- package/docs/api/interfaces/RoleBasedRouterProps.md +0 -156
- package/docs/api/interfaces/RoleManagementResult.md +0 -52
- package/docs/api/interfaces/RouteAccessRecord.md +0 -107
- package/docs/api/interfaces/RouteConfig.md +0 -134
- package/docs/api/interfaces/RuntimeComplianceResult.md +0 -55
- package/docs/api/interfaces/SecureDataContextType.md +0 -168
- package/docs/api/interfaces/SecureDataProviderProps.md +0 -132
- package/docs/api/interfaces/SessionRestorationLoaderProps.md +0 -34
- package/docs/api/interfaces/SetupIssue.md +0 -41
- package/docs/api/interfaces/StorageConfig.md +0 -41
- package/docs/api/interfaces/StorageFileInfo.md +0 -74
- package/docs/api/interfaces/StorageFileMetadata.md +0 -151
- package/docs/api/interfaces/StorageListOptions.md +0 -99
- package/docs/api/interfaces/StorageListResult.md +0 -41
- package/docs/api/interfaces/StorageUploadOptions.md +0 -101
- package/docs/api/interfaces/StorageUploadResult.md +0 -63
- package/docs/api/interfaces/StorageUrlOptions.md +0 -60
- package/docs/api/interfaces/StyleImport.md +0 -19
- package/docs/api/interfaces/SwitchProps.md +0 -34
- package/docs/api/interfaces/TabsContentProps.md +0 -9
- package/docs/api/interfaces/TabsListProps.md +0 -9
- package/docs/api/interfaces/TabsProps.md +0 -9
- package/docs/api/interfaces/TabsTriggerProps.md +0 -50
- package/docs/api/interfaces/TextareaProps.md +0 -53
- package/docs/api/interfaces/ToastActionElement.md +0 -12
- package/docs/api/interfaces/ToastProps.md +0 -9
- package/docs/api/interfaces/UnifiedAuthContextType.md +0 -823
- package/docs/api/interfaces/UnifiedAuthProviderProps.md +0 -173
- package/docs/api/interfaces/UseFormDialogOptions.md +0 -62
- package/docs/api/interfaces/UseFormDialogReturn.md +0 -117
- package/docs/api/interfaces/UseInactivityTrackerOptions.md +0 -138
- package/docs/api/interfaces/UseInactivityTrackerReturn.md +0 -123
- package/docs/api/interfaces/UsePublicEventLogoOptions.md +0 -87
- package/docs/api/interfaces/UsePublicEventLogoReturn.md +0 -84
- package/docs/api/interfaces/UsePublicEventOptions.md +0 -34
- package/docs/api/interfaces/UsePublicEventReturn.md +0 -71
- package/docs/api/interfaces/UsePublicFileDisplayOptions.md +0 -47
- package/docs/api/interfaces/UsePublicFileDisplayReturn.md +0 -123
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +0 -97
- package/docs/api/interfaces/UseResolvedScopeOptions.md +0 -47
- package/docs/api/interfaces/UseResolvedScopeReturn.md +0 -47
- package/docs/api/interfaces/UseResourcePermissionsOptions.md +0 -34
- package/docs/api/interfaces/UserEventAccess.md +0 -121
- package/docs/api/interfaces/UserMenuProps.md +0 -88
- package/docs/api/interfaces/UserProfile.md +0 -63
- package/src/components/EventSelector/EventSelector.test.tsx +0 -720
- package/src/components/EventSelector/EventSelector.tsx +0 -423
- package/src/components/EventSelector/index.ts +0 -3
- package/src/components/OrganisationSelector/OrganisationSelector.test.tsx +0 -784
- package/src/components/OrganisationSelector/OrganisationSelector.tsx +0 -327
- package/src/components/OrganisationSelector/index.ts +0 -9
- /package/dist/{DataTable-TPTKCX4D.js.map → DataTable-E7YQZD7D.js.map} +0 -0
- /package/dist/{UnifiedAuthProvider-CH6Z342H.js.map → UnifiedAuthProvider-QPXO24B4.js.map} +0 -0
- /package/dist/{api-MVVQZLJI.js.map → api-6LVZTHDS.js.map} +0 -0
- /package/dist/{audit-B5P6FFIR.js.map → audit-V53FV5AG.js.map} +0 -0
- /package/dist/{chunk-2UOI2FG5.js.map → chunk-5EC5MEWX.js.map} +0 -0
- /package/dist/{chunk-7D4SUZUM.js.map → chunk-DGUM43GV.js.map} +0 -0
- /package/dist/{chunk-F2IMUDXZ.js.map → chunk-M7MPQISP.js.map} +0 -0
|
@@ -5,20 +5,22 @@ import {
|
|
|
5
5
|
useMultiplePermissions,
|
|
6
6
|
useResolvedScope,
|
|
7
7
|
useSecureSupabase
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-NN6WWZ5U.js";
|
|
9
9
|
import {
|
|
10
10
|
useOrganisationSecurity
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-OEWDTMG7.js";
|
|
12
12
|
import {
|
|
13
13
|
useUnifiedAuth
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-AVMLPIM7.js";
|
|
15
15
|
import {
|
|
16
16
|
RBACCache,
|
|
17
|
-
RBACNotInitializedError,
|
|
18
17
|
getRBACConfig,
|
|
19
18
|
getRBACLogger,
|
|
20
19
|
rbacCache
|
|
21
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-3LPHPB62.js";
|
|
21
|
+
import {
|
|
22
|
+
RBACNotInitializedError
|
|
23
|
+
} from "./chunk-36LVWXB2.js";
|
|
22
24
|
import {
|
|
23
25
|
createLogger,
|
|
24
26
|
logger
|
|
@@ -176,6 +178,7 @@ var PagePermissionGuardComponent = ({
|
|
|
176
178
|
const instanceId = useMemo2(() => Math.random().toString(36).substr(2, 9), []);
|
|
177
179
|
const { user, selectedOrganisation, selectedEvent, supabase, appId: contextAppId, appName } = useUnifiedAuth();
|
|
178
180
|
const [hasChecked, setHasChecked] = useState2(false);
|
|
181
|
+
const hasLoggedSuperAdminRef = useRef(false);
|
|
179
182
|
const effectivePageId = useMemo2(() => {
|
|
180
183
|
return pageId || pageName;
|
|
181
184
|
}, [pageId, pageName]);
|
|
@@ -189,7 +192,7 @@ var PagePermissionGuardComponent = ({
|
|
|
189
192
|
const checkSuperAdmin = async () => {
|
|
190
193
|
const startTime = Date.now();
|
|
191
194
|
try {
|
|
192
|
-
const { isSuperAdmin: checkSuperAdmin2 } = await import("./api-
|
|
195
|
+
const { isSuperAdmin: checkSuperAdmin2 } = await import("./api-6LVZTHDS.js");
|
|
193
196
|
const timeoutPromise = new Promise((_, reject) => {
|
|
194
197
|
setTimeout(() => reject(new Error("Super admin check timeout")), 1e4);
|
|
195
198
|
});
|
|
@@ -350,9 +353,10 @@ var PagePermissionGuardComponent = ({
|
|
|
350
353
|
const shouldShowContent = isPermissionCheckComplete && hasValidScopeForPagePermissions && hasValidUser && !checkError && effectiveCan;
|
|
351
354
|
const scopeKey = effectiveScope ? `${effectiveScope.organisationId}-${effectiveScope.eventId}-${effectiveScope.appId}` : "no-scope";
|
|
352
355
|
const permissionKey = `${scopeKey}-${can}-${isLoading}-${!!checkError}-${hasChecked}`;
|
|
356
|
+
const lastLogStateRef = useRef("");
|
|
353
357
|
useEffect2(() => {
|
|
354
358
|
if (false) {
|
|
355
|
-
|
|
359
|
+
const currentState = JSON.stringify({
|
|
356
360
|
pageName,
|
|
357
361
|
userId: user?.id,
|
|
358
362
|
isSuperAdmin,
|
|
@@ -361,10 +365,24 @@ var PagePermissionGuardComponent = ({
|
|
|
361
365
|
canIsLoading,
|
|
362
366
|
hasChecked,
|
|
363
367
|
hasValidUser,
|
|
364
|
-
effectiveCan
|
|
365
|
-
stableScope,
|
|
366
|
-
effectiveScope
|
|
368
|
+
effectiveCan
|
|
367
369
|
});
|
|
370
|
+
if (currentState !== lastLogStateRef.current) {
|
|
371
|
+
lastLogStateRef.current = currentState;
|
|
372
|
+
console.log("[PagePermissionGuard] Permission check state", {
|
|
373
|
+
pageName,
|
|
374
|
+
userId: user?.id,
|
|
375
|
+
isSuperAdmin,
|
|
376
|
+
isLoading,
|
|
377
|
+
scopeLoading,
|
|
378
|
+
canIsLoading,
|
|
379
|
+
hasChecked,
|
|
380
|
+
hasValidUser,
|
|
381
|
+
effectiveCan,
|
|
382
|
+
stableScope,
|
|
383
|
+
effectiveScope
|
|
384
|
+
});
|
|
385
|
+
}
|
|
368
386
|
}
|
|
369
387
|
}, [pageName, user?.id, isSuperAdmin, isLoading, scopeLoading, canIsLoading, hasChecked, hasValidUser, effectiveCan, stableScope, effectiveScope]);
|
|
370
388
|
useEffect2(() => {
|
|
@@ -385,12 +403,20 @@ var PagePermissionGuardComponent = ({
|
|
|
385
403
|
return () => clearTimeout(timeout);
|
|
386
404
|
}
|
|
387
405
|
}, [isLoading, isSuperAdmin, hasValidUser, pageName, user?.id, scopeLoading, canIsLoading, hasChecked, stableScope, effectiveScope, appName]);
|
|
406
|
+
useEffect2(() => {
|
|
407
|
+
if (isSuperAdmin === true && hasValidUser && !hasLoggedSuperAdminRef.current && false) {
|
|
408
|
+
hasLoggedSuperAdminRef.current = true;
|
|
409
|
+
console.log("[PagePermissionGuard] Super admin access granted - bypassing all checks", {
|
|
410
|
+
pageName,
|
|
411
|
+
userId: user?.id,
|
|
412
|
+
operation
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
if (isSuperAdmin !== true) {
|
|
416
|
+
hasLoggedSuperAdminRef.current = false;
|
|
417
|
+
}
|
|
418
|
+
}, [isSuperAdmin, hasValidUser, pageName, user?.id, operation]);
|
|
388
419
|
if (isSuperAdmin === true && hasValidUser) {
|
|
389
|
-
console.log("[PagePermissionGuard] Super admin access granted - bypassing all checks", {
|
|
390
|
-
pageName,
|
|
391
|
-
userId: user?.id,
|
|
392
|
-
operation
|
|
393
|
-
});
|
|
394
420
|
return /* @__PURE__ */ jsx2(Fragment, { children });
|
|
395
421
|
}
|
|
396
422
|
if (isLoading || !hasValidUser || !hasChecked || isSuperAdmin === null) {
|
|
@@ -1354,13 +1380,13 @@ function withPermissionGuard(config, handler) {
|
|
|
1354
1380
|
if (!userId || !organisationId) {
|
|
1355
1381
|
throw new Error("User context required for permission check");
|
|
1356
1382
|
}
|
|
1357
|
-
const { isPermitted: isPermitted2 } = await import("./api-
|
|
1383
|
+
const { isPermitted: isPermitted2 } = await import("./api-6LVZTHDS.js");
|
|
1358
1384
|
const hasPermission2 = await isPermitted2({
|
|
1359
1385
|
userId,
|
|
1360
1386
|
scope: { organisationId, eventId, appId },
|
|
1361
1387
|
permission: config.permission,
|
|
1362
1388
|
pageId: config.pageId
|
|
1363
|
-
}
|
|
1389
|
+
});
|
|
1364
1390
|
if (!hasPermission2) {
|
|
1365
1391
|
throw new Error(`Permission denied: ${config.permission}`);
|
|
1366
1392
|
}
|
|
@@ -1377,7 +1403,7 @@ function withAccessLevelGuard(minLevel, handler) {
|
|
|
1377
1403
|
if (!userId || !organisationId) {
|
|
1378
1404
|
throw new Error("User context required for access level check");
|
|
1379
1405
|
}
|
|
1380
|
-
const { getAccessLevel: getAccessLevel2 } = await import("./api-
|
|
1406
|
+
const { getAccessLevel: getAccessLevel2 } = await import("./api-6LVZTHDS.js");
|
|
1381
1407
|
const accessLevel = await getAccessLevel2({
|
|
1382
1408
|
userId,
|
|
1383
1409
|
scope: { organisationId, eventId, appId }
|
|
@@ -1402,11 +1428,11 @@ function withRoleGuard(config, handler) {
|
|
|
1402
1428
|
throw new Error("User context required for role check");
|
|
1403
1429
|
}
|
|
1404
1430
|
if (config.globalRoles && config.globalRoles.length > 0) {
|
|
1405
|
-
const { isSuperAdmin } = await import("./api-
|
|
1431
|
+
const { isSuperAdmin } = await import("./api-6LVZTHDS.js");
|
|
1406
1432
|
const isSuper = await isSuperAdmin(userId);
|
|
1407
1433
|
if (isSuper) {
|
|
1408
1434
|
if (organisationId) {
|
|
1409
|
-
const { emitAuditEvent: emitAuditEvent2 } = await import("./audit-
|
|
1435
|
+
const { emitAuditEvent: emitAuditEvent2 } = await import("./audit-V53FV5AG.js");
|
|
1410
1436
|
await emitAuditEvent2({
|
|
1411
1437
|
type: "permission_check",
|
|
1412
1438
|
userId,
|
|
@@ -1428,21 +1454,21 @@ function withRoleGuard(config, handler) {
|
|
|
1428
1454
|
}
|
|
1429
1455
|
}
|
|
1430
1456
|
if (config.organisationRoles && config.organisationRoles.length > 0) {
|
|
1431
|
-
const { isOrganisationAdmin } = await import("./api-
|
|
1457
|
+
const { isOrganisationAdmin } = await import("./api-6LVZTHDS.js");
|
|
1432
1458
|
const isOrgAdmin = await isOrganisationAdmin(userId, organisationId);
|
|
1433
1459
|
if (!isOrgAdmin && config.requireAll !== false) {
|
|
1434
1460
|
throw new Error(`Organisation admin role required`);
|
|
1435
1461
|
}
|
|
1436
1462
|
}
|
|
1437
1463
|
if (config.eventAppRoles && config.eventAppRoles.length > 0 && eventId && appId) {
|
|
1438
|
-
const { isEventAdmin } = await import("./api-
|
|
1464
|
+
const { isEventAdmin } = await import("./api-6LVZTHDS.js");
|
|
1439
1465
|
const isEventAdminUser = await isEventAdmin(userId, { organisationId, eventId, appId });
|
|
1440
1466
|
if (!isEventAdminUser && config.requireAll !== false) {
|
|
1441
1467
|
throw new Error(`Event admin role required`);
|
|
1442
1468
|
}
|
|
1443
1469
|
}
|
|
1444
1470
|
if (organisationId) {
|
|
1445
|
-
const { emitAuditEvent: emitAuditEvent2 } = await import("./audit-
|
|
1471
|
+
const { emitAuditEvent: emitAuditEvent2 } = await import("./audit-V53FV5AG.js");
|
|
1446
1472
|
await emitAuditEvent2({
|
|
1447
1473
|
type: "permission_check",
|
|
1448
1474
|
userId,
|
|
@@ -1475,13 +1501,13 @@ function createRBACMiddleware(config) {
|
|
|
1475
1501
|
);
|
|
1476
1502
|
if (protectedRoute) {
|
|
1477
1503
|
try {
|
|
1478
|
-
const { isPermitted: isPermitted2 } = await import("./api-
|
|
1504
|
+
const { isPermitted: isPermitted2 } = await import("./api-6LVZTHDS.js");
|
|
1479
1505
|
const hasPermission2 = await isPermitted2({
|
|
1480
1506
|
userId,
|
|
1481
1507
|
scope: { organisationId },
|
|
1482
1508
|
permission: protectedRoute.permission,
|
|
1483
1509
|
pageId: protectedRoute.pageId
|
|
1484
|
-
}
|
|
1510
|
+
});
|
|
1485
1511
|
if (!hasPermission2) {
|
|
1486
1512
|
return res.redirect(config.fallbackUrl || "/access-denied");
|
|
1487
1513
|
}
|
|
@@ -1502,7 +1528,7 @@ function createRBACExpressMiddleware(config) {
|
|
|
1502
1528
|
return res.status(401).json({ error: "User context required" });
|
|
1503
1529
|
}
|
|
1504
1530
|
try {
|
|
1505
|
-
const { isPermitted: isPermitted2 } = await import("./api-
|
|
1531
|
+
const { isPermitted: isPermitted2 } = await import("./api-6LVZTHDS.js");
|
|
1506
1532
|
const hasPermission2 = await isPermitted2({
|
|
1507
1533
|
userId,
|
|
1508
1534
|
scope: { organisationId, eventId, appId },
|
|
@@ -2024,4 +2050,4 @@ export {
|
|
|
2024
2050
|
getDirectSupabaseAuthFixes,
|
|
2025
2051
|
getQuickFixes
|
|
2026
2052
|
};
|
|
2027
|
-
//# sourceMappingURL=chunk-
|
|
2053
|
+
//# sourceMappingURL=chunk-ATKZM7RX.js.map
|