@jmruthers/pace-core 0.5.152 → 0.5.154
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/dist/{chunk-UHNMAVK4.js → chunk-UM4TRLQG.js} +46 -2
- package/dist/chunk-UM4TRLQG.js.map +1 -0
- package/dist/components.js +1 -1
- package/dist/index.js +1 -1
- package/docs/api/classes/ColumnFactory.md +1 -1
- package/docs/api/classes/ErrorBoundary.md +1 -1
- package/docs/api/classes/InvalidScopeError.md +1 -1
- package/docs/api/classes/MissingUserContextError.md +1 -1
- package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
- package/docs/api/classes/PermissionDeniedError.md +1 -1
- package/docs/api/classes/PublicErrorBoundary.md +1 -1
- package/docs/api/classes/RBACAuditManager.md +1 -1
- package/docs/api/classes/RBACCache.md +1 -1
- package/docs/api/classes/RBACEngine.md +1 -1
- package/docs/api/classes/RBACError.md +1 -1
- package/docs/api/classes/RBACNotInitializedError.md +1 -1
- package/docs/api/classes/SecureSupabaseClient.md +1 -1
- package/docs/api/classes/StorageUtils.md +1 -1
- package/docs/api/enums/FileCategory.md +1 -1
- package/docs/api/interfaces/AggregateConfig.md +1 -1
- package/docs/api/interfaces/BadgeProps.md +1 -1
- package/docs/api/interfaces/ButtonProps.md +1 -1
- package/docs/api/interfaces/CalendarProps.md +1 -1
- package/docs/api/interfaces/CardProps.md +1 -1
- package/docs/api/interfaces/ColorPalette.md +1 -1
- package/docs/api/interfaces/ColorShade.md +1 -1
- package/docs/api/interfaces/DataAccessRecord.md +1 -1
- package/docs/api/interfaces/DataRecord.md +1 -1
- package/docs/api/interfaces/DataTableAction.md +1 -1
- package/docs/api/interfaces/DataTableColumn.md +1 -1
- package/docs/api/interfaces/DataTableProps.md +1 -1
- package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
- package/docs/api/interfaces/EmptyStateConfig.md +1 -1
- package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
- package/docs/api/interfaces/EventAppRoleData.md +1 -1
- package/docs/api/interfaces/EventLogoProps.md +1 -1
- package/docs/api/interfaces/ExportColumn.md +1 -1
- package/docs/api/interfaces/ExportOptions.md +1 -1
- package/docs/api/interfaces/FileDisplayProps.md +1 -1
- package/docs/api/interfaces/FileMetadata.md +1 -1
- package/docs/api/interfaces/FileReference.md +1 -1
- package/docs/api/interfaces/FileSizeLimits.md +1 -1
- package/docs/api/interfaces/FileUploadOptions.md +1 -1
- package/docs/api/interfaces/FileUploadProps.md +1 -1
- package/docs/api/interfaces/FooterProps.md +1 -1
- package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
- package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
- package/docs/api/interfaces/InputProps.md +1 -1
- package/docs/api/interfaces/LabelProps.md +1 -1
- package/docs/api/interfaces/LoginFormProps.md +1 -1
- package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
- package/docs/api/interfaces/NavigationContextType.md +1 -1
- package/docs/api/interfaces/NavigationGuardProps.md +1 -1
- package/docs/api/interfaces/NavigationItem.md +1 -1
- package/docs/api/interfaces/NavigationMenuProps.md +1 -1
- package/docs/api/interfaces/NavigationProviderProps.md +1 -1
- package/docs/api/interfaces/Organisation.md +1 -1
- package/docs/api/interfaces/OrganisationContextType.md +1 -1
- package/docs/api/interfaces/OrganisationMembership.md +1 -1
- package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
- package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
- package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
- package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
- package/docs/api/interfaces/PageAccessRecord.md +1 -1
- package/docs/api/interfaces/PagePermissionContextType.md +1 -1
- package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
- package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
- package/docs/api/interfaces/PaletteData.md +1 -1
- package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
- package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
- package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
- package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
- package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
- package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
- package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
- package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
- package/docs/api/interfaces/RBACConfig.md +1 -1
- package/docs/api/interfaces/RBACLogger.md +1 -1
- package/docs/api/interfaces/ResourcePermissions.md +1 -1
- package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
- package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
- package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
- package/docs/api/interfaces/RoleManagementResult.md +1 -1
- package/docs/api/interfaces/RouteAccessRecord.md +1 -1
- package/docs/api/interfaces/RouteConfig.md +1 -1
- package/docs/api/interfaces/SecureDataContextType.md +1 -1
- package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
- package/docs/api/interfaces/SessionRestorationLoaderProps.md +1 -1
- package/docs/api/interfaces/StorageConfig.md +1 -1
- package/docs/api/interfaces/StorageFileInfo.md +1 -1
- package/docs/api/interfaces/StorageFileMetadata.md +1 -1
- package/docs/api/interfaces/StorageListOptions.md +1 -1
- package/docs/api/interfaces/StorageListResult.md +1 -1
- package/docs/api/interfaces/StorageUploadOptions.md +1 -1
- package/docs/api/interfaces/StorageUploadResult.md +1 -1
- package/docs/api/interfaces/StorageUrlOptions.md +1 -1
- package/docs/api/interfaces/StyleImport.md +1 -1
- package/docs/api/interfaces/SwitchProps.md +1 -1
- package/docs/api/interfaces/TabsContentProps.md +1 -1
- package/docs/api/interfaces/TabsListProps.md +1 -1
- package/docs/api/interfaces/TabsProps.md +1 -1
- package/docs/api/interfaces/TabsTriggerProps.md +1 -1
- package/docs/api/interfaces/TextareaProps.md +1 -1
- package/docs/api/interfaces/ToastActionElement.md +1 -1
- package/docs/api/interfaces/ToastProps.md +1 -1
- package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
- package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
- package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
- package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
- package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
- package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
- package/docs/api/interfaces/UsePublicFileDisplayOptions.md +1 -1
- package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
- package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
- package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
- package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
- package/docs/api/interfaces/UserEventAccess.md +1 -1
- package/docs/api/interfaces/UserMenuProps.md +1 -1
- package/docs/api/interfaces/UserProfile.md +1 -1
- package/docs/api/modules.md +2 -2
- package/package.json +1 -1
- package/src/components/NavigationMenu/NavigationMenu.tsx +50 -1
- package/dist/chunk-UHNMAVK4.js.map +0 -1
package/docs/api/modules.md
CHANGED
package/package.json
CHANGED
|
@@ -503,16 +503,35 @@ export const NavigationMenu = React.forwardRef<
|
|
|
503
503
|
const effectiveScope = React.useMemo(() => {
|
|
504
504
|
if (!scopeLoading && resolvedScope?.organisationId) {
|
|
505
505
|
// Use resolved scope if available (includes appId)
|
|
506
|
+
logger.warn('NavigationMenu', 'Using resolvedScope', {
|
|
507
|
+
organisationId: resolvedScope.organisationId,
|
|
508
|
+
eventId: resolvedScope.eventId,
|
|
509
|
+
appId: resolvedScope.appId
|
|
510
|
+
});
|
|
506
511
|
return resolvedScope;
|
|
507
512
|
} else if (!scopeLoading && selectedOrganisation?.id) {
|
|
508
513
|
// Fall back to building scope from context if resolvedScope is null but context is ready
|
|
509
514
|
// Use resolvedAppId if we've resolved it, otherwise undefined (usePermissions will try to resolve)
|
|
510
|
-
|
|
515
|
+
const fallbackScope = {
|
|
511
516
|
organisationId: selectedOrganisation.id,
|
|
512
517
|
eventId: selectedEvent?.event_id || undefined,
|
|
513
518
|
appId: resolvedAppId
|
|
514
519
|
};
|
|
520
|
+
logger.warn('NavigationMenu', 'Using fallback scope', {
|
|
521
|
+
organisationId: fallbackScope.organisationId,
|
|
522
|
+
eventId: fallbackScope.eventId,
|
|
523
|
+
appId: fallbackScope.appId,
|
|
524
|
+
resolvedAppId,
|
|
525
|
+
hasResolvedScope: !!resolvedScope,
|
|
526
|
+
scopeLoading
|
|
527
|
+
});
|
|
528
|
+
return fallbackScope;
|
|
515
529
|
}
|
|
530
|
+
logger.warn('NavigationMenu', 'effectiveScope is null', {
|
|
531
|
+
scopeLoading,
|
|
532
|
+
hasResolvedScope: !!resolvedScope,
|
|
533
|
+
hasSelectedOrganisation: !!selectedOrganisation?.id
|
|
534
|
+
});
|
|
516
535
|
return null;
|
|
517
536
|
}, [scopeLoading, resolvedScope, selectedOrganisation?.id, selectedEvent?.event_id, resolvedAppId]);
|
|
518
537
|
|
|
@@ -537,10 +556,40 @@ export const NavigationMenu = React.forwardRef<
|
|
|
537
556
|
|
|
538
557
|
// Get permissions map for synchronous permission checks
|
|
539
558
|
const userId = authContext?.user?.id || '';
|
|
559
|
+
|
|
560
|
+
// Debug logging to understand why usePermissions returns empty map
|
|
561
|
+
React.useEffect(() => {
|
|
562
|
+
if (filterByPermissions && stableScope.organisationId) {
|
|
563
|
+
logger.warn('NavigationMenu', 'usePermissions scope', {
|
|
564
|
+
userId,
|
|
565
|
+
scope: stableScope,
|
|
566
|
+
hasOrganisationId: !!stableScope.organisationId,
|
|
567
|
+
hasEventId: !!stableScope.eventId,
|
|
568
|
+
hasAppId: !!stableScope.appId,
|
|
569
|
+
organisationId: stableScope.organisationId,
|
|
570
|
+
eventId: stableScope.eventId,
|
|
571
|
+
appId: stableScope.appId
|
|
572
|
+
});
|
|
573
|
+
}
|
|
574
|
+
}, [filterByPermissions, stableScope.organisationId, stableScope.eventId, stableScope.appId, userId]);
|
|
575
|
+
|
|
540
576
|
const { permissions: permissionMap, hasAnyPermission, isLoading: permissionsLoading, error: permissionsError } = usePermissions(
|
|
541
577
|
userId as any,
|
|
542
578
|
stableScope as any
|
|
543
579
|
);
|
|
580
|
+
|
|
581
|
+
// Debug logging for permission map state
|
|
582
|
+
React.useEffect(() => {
|
|
583
|
+
if (filterByPermissions) {
|
|
584
|
+
logger.warn('NavigationMenu', 'usePermissions result', {
|
|
585
|
+
permissionMapSize: permissionMap ? Object.keys(permissionMap).length : 0,
|
|
586
|
+
isLoading: permissionsLoading,
|
|
587
|
+
error: permissionsError?.message,
|
|
588
|
+
hasError: !!permissionsError,
|
|
589
|
+
scope: stableScope
|
|
590
|
+
});
|
|
591
|
+
}
|
|
592
|
+
}, [filterByPermissions, permissionMap, permissionsLoading, permissionsError, stableScope]);
|
|
544
593
|
|
|
545
594
|
// NEW: Phase 2 - Enhanced Security Features
|
|
546
595
|
// Filter navigation items based on permissions using RBAC hooks
|