@jmruthers/pace-core 0.5.169 → 0.5.171
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-D2BVDX3I.js → chunk-R22KYCHR.js} +63 -16
- package/dist/chunk-R22KYCHR.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 +65 -14
- package/dist/chunk-D2BVDX3I.js.map +0 -1
|
@@ -1282,6 +1282,15 @@ var NavigationMenu = React12.forwardRef(({
|
|
|
1282
1282
|
}, [filterByPermissions, permissionMap, permissionsLoading, permissionsError, stableScope]);
|
|
1283
1283
|
const previousFilteredItemsRef = React12.useRef([]);
|
|
1284
1284
|
const filteredItems = React12.useMemo(() => {
|
|
1285
|
+
logger.warn("NavigationMenu", "filteredItems useMemo running", {
|
|
1286
|
+
filterByPermissions,
|
|
1287
|
+
hasAuthContext: !!authContext,
|
|
1288
|
+
hasRbacContext: !!rbacContext,
|
|
1289
|
+
permissionsLoading,
|
|
1290
|
+
permissionMapSize: permissionMap ? Object.keys(permissionMap).length : 0,
|
|
1291
|
+
permissionsError: permissionsError?.message,
|
|
1292
|
+
itemsCount: items?.length || 0
|
|
1293
|
+
});
|
|
1285
1294
|
if (filterByPermissions) {
|
|
1286
1295
|
const isOrgContextReady = orgContextReady && selectedOrganisation?.id;
|
|
1287
1296
|
const isEventContextReady = eventLoadingRaw === void 0 ? true : !eventLoading;
|
|
@@ -1317,7 +1326,16 @@ var NavigationMenu = React12.forwardRef(({
|
|
|
1317
1326
|
const permissions = item.permissions.filter((p) => typeof p === "string").map((p) => p);
|
|
1318
1327
|
if (permissions.length > 0) {
|
|
1319
1328
|
const hasPermission = hasAnyPermission(permissions);
|
|
1320
|
-
if (!hasPermission)
|
|
1329
|
+
if (!hasPermission) {
|
|
1330
|
+
logger.warn("NavigationMenu", `Filtering out navigation item "${item.label}" - no explicit permission:`, {
|
|
1331
|
+
itemId: item.id,
|
|
1332
|
+
href: item.href,
|
|
1333
|
+
requiredPermissions: permissions,
|
|
1334
|
+
hasPermission,
|
|
1335
|
+
permissionMapKeys: Object.keys(permissionMap).slice(0, 20)
|
|
1336
|
+
});
|
|
1337
|
+
return false;
|
|
1338
|
+
}
|
|
1321
1339
|
}
|
|
1322
1340
|
}
|
|
1323
1341
|
if (item.roles && item.roles.length > 0) {
|
|
@@ -1338,7 +1356,18 @@ var NavigationMenu = React12.forwardRef(({
|
|
|
1338
1356
|
return rbacContext.organisationRole === role || rbacContext.eventAppRole === role || rbacContext.isSuperAdmin;
|
|
1339
1357
|
}
|
|
1340
1358
|
});
|
|
1341
|
-
if (!hasRole)
|
|
1359
|
+
if (!hasRole) {
|
|
1360
|
+
logger.warn("NavigationMenu", `Filtering out navigation item "${item.label}" - no required role:`, {
|
|
1361
|
+
itemId: item.id,
|
|
1362
|
+
href: item.href,
|
|
1363
|
+
requiredRoles: item.roles,
|
|
1364
|
+
hasRole,
|
|
1365
|
+
organisationRole: rbacContext.organisationRole,
|
|
1366
|
+
eventAppRole: rbacContext.eventAppRole,
|
|
1367
|
+
isSuperAdmin: rbacContext.isSuperAdmin
|
|
1368
|
+
});
|
|
1369
|
+
return false;
|
|
1370
|
+
}
|
|
1342
1371
|
}
|
|
1343
1372
|
if (item.accessLevel) {
|
|
1344
1373
|
if (typeof item.accessLevel === "string") {
|
|
@@ -1363,6 +1392,13 @@ var NavigationMenu = React12.forwardRef(({
|
|
|
1363
1392
|
const requiredLevel = levelHierarchy[accessLevel] || 0;
|
|
1364
1393
|
const userLevel = userAccessLevel ? levelHierarchy[userAccessLevel] || 0 : 0;
|
|
1365
1394
|
if (userLevel < requiredLevel) {
|
|
1395
|
+
logger.warn("NavigationMenu", `Filtering out navigation item "${item.label}" - insufficient access level:`, {
|
|
1396
|
+
itemId: item.id,
|
|
1397
|
+
href: item.href,
|
|
1398
|
+
requiredAccessLevel: item.accessLevel,
|
|
1399
|
+
userAccessLevel,
|
|
1400
|
+
userEventRole: rbacContext.eventAppRole
|
|
1401
|
+
});
|
|
1366
1402
|
return false;
|
|
1367
1403
|
}
|
|
1368
1404
|
}
|
|
@@ -1376,23 +1412,29 @@ var NavigationMenu = React12.forwardRef(({
|
|
|
1376
1412
|
const hasPagePermission = permissionMap[pagePermission] === true;
|
|
1377
1413
|
const finalHasPermission = isSuperAdmin2 || hasPagePermission;
|
|
1378
1414
|
if (!finalHasPermission) {
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
});
|
|
1391
|
-
}
|
|
1415
|
+
logger.warn("NavigationMenu", `Filtering out navigation item "${item.label}" - no page permission:`, {
|
|
1416
|
+
itemId: item.id,
|
|
1417
|
+
href: item.href,
|
|
1418
|
+
pageId,
|
|
1419
|
+
permission: pagePermission,
|
|
1420
|
+
hasPermission: finalHasPermission,
|
|
1421
|
+
isSuperAdmin: isSuperAdmin2,
|
|
1422
|
+
permissionMapValue: permissionMap[pagePermission],
|
|
1423
|
+
permissionMapKeys: Object.keys(permissionMap).slice(0, 20)
|
|
1424
|
+
// Show first 20 keys for debugging
|
|
1425
|
+
});
|
|
1392
1426
|
return false;
|
|
1393
1427
|
}
|
|
1394
1428
|
}
|
|
1395
1429
|
}
|
|
1430
|
+
logger.debug("NavigationMenu", `Navigation item "${item.label}" passed all permission checks`, {
|
|
1431
|
+
itemId: item.id,
|
|
1432
|
+
href: item.href,
|
|
1433
|
+
hasPermissions: !!(item.permissions && item.permissions.length > 0),
|
|
1434
|
+
hasRoles: !!(item.roles && item.roles.length > 0),
|
|
1435
|
+
hasAccessLevel: !!item.accessLevel,
|
|
1436
|
+
hasHref: !!item.href
|
|
1437
|
+
});
|
|
1396
1438
|
return true;
|
|
1397
1439
|
};
|
|
1398
1440
|
const filterItem = (item) => {
|
|
@@ -1411,6 +1453,11 @@ var NavigationMenu = React12.forwardRef(({
|
|
|
1411
1453
|
};
|
|
1412
1454
|
};
|
|
1413
1455
|
const filtered = (items || []).map((item) => filterItem(item)).filter((item) => item !== null);
|
|
1456
|
+
logger.warn("NavigationMenu", "filteredItems result", {
|
|
1457
|
+
originalItemsCount: items?.length || 0,
|
|
1458
|
+
filteredItemsCount: filtered.length,
|
|
1459
|
+
permissionMapSize: permissionMap ? Object.keys(permissionMap).length : 0
|
|
1460
|
+
});
|
|
1414
1461
|
previousFilteredItemsRef.current = filtered;
|
|
1415
1462
|
return filtered;
|
|
1416
1463
|
}, [
|
|
@@ -4655,4 +4702,4 @@ export {
|
|
|
4655
4702
|
EventLogoCompact,
|
|
4656
4703
|
EventLogoLarge
|
|
4657
4704
|
};
|
|
4658
|
-
//# sourceMappingURL=chunk-
|
|
4705
|
+
//# sourceMappingURL=chunk-R22KYCHR.js.map
|