@jmruthers/pace-core 0.5.178 → 0.5.179
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-GOL4XSJU.js → chunk-PJEVDATQ.js} +31 -3
- package/dist/chunk-PJEVDATQ.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/PaceAppLayout/PaceAppLayout.tsx +41 -2
- package/src/rbac/hooks/useResourcePermissions.test.ts +26 -3
- package/dist/chunk-GOL4XSJU.js.map +0 -1
|
@@ -1745,7 +1745,7 @@ function PaceAppLayout({
|
|
|
1745
1745
|
selectedEvent = eventsContext.selectedEvent;
|
|
1746
1746
|
} catch (error) {
|
|
1747
1747
|
}
|
|
1748
|
-
const { resolvedScope } = useResolvedScope({
|
|
1748
|
+
const { resolvedScope, isLoading: scopeLoading } = useResolvedScope({
|
|
1749
1749
|
supabase: supabase || null,
|
|
1750
1750
|
selectedOrganisationId: selectedOrganisation?.id || null,
|
|
1751
1751
|
selectedEventId: selectedEvent?.event_id || null
|
|
@@ -1857,6 +1857,12 @@ function PaceAppLayout({
|
|
|
1857
1857
|
return;
|
|
1858
1858
|
}
|
|
1859
1859
|
const currentScope = scope;
|
|
1860
|
+
if (scopeLoading || !currentScope.appId) {
|
|
1861
|
+
if (isMounted) {
|
|
1862
|
+
setFilteredMenuItems(baseMenuItems);
|
|
1863
|
+
}
|
|
1864
|
+
return;
|
|
1865
|
+
}
|
|
1860
1866
|
try {
|
|
1861
1867
|
const { isSuperAdmin: isSuperAdmin2 } = await import("./api-45XYYO2A.js");
|
|
1862
1868
|
const isSuper = await isSuperAdmin2(user.id);
|
|
@@ -1880,16 +1886,38 @@ function PaceAppLayout({
|
|
|
1880
1886
|
}
|
|
1881
1887
|
try {
|
|
1882
1888
|
const { getPermissionMap } = await import("./api-45XYYO2A.js");
|
|
1889
|
+
logger.debug("PaceAppLayout", "Filtering navigation with scope", {
|
|
1890
|
+
organisationId: currentScope.organisationId,
|
|
1891
|
+
eventId: currentScope.eventId,
|
|
1892
|
+
appId: currentScope.appId,
|
|
1893
|
+
hasOrganisationId: !!currentScope.organisationId,
|
|
1894
|
+
hasEventId: !!currentScope.eventId,
|
|
1895
|
+
hasAppId: !!currentScope.appId
|
|
1896
|
+
});
|
|
1883
1897
|
const permissionMap = await getPermissionMap({
|
|
1884
1898
|
userId: user.id,
|
|
1885
1899
|
scope: currentScope
|
|
1886
1900
|
});
|
|
1901
|
+
logger.debug("PaceAppLayout", "Permission map received", {
|
|
1902
|
+
permissionCount: Object.keys(permissionMap).length,
|
|
1903
|
+
permissions: Object.keys(permissionMap),
|
|
1904
|
+
hasWildcard: permissionMap["*"] === true
|
|
1905
|
+
});
|
|
1887
1906
|
const filtered = baseMenuItems.map((item) => {
|
|
1888
1907
|
if (!item.href) return { item, hasAccess: true };
|
|
1889
1908
|
const pageId = pageIdMapping[item.href] || item.href.slice(1) || "home";
|
|
1890
1909
|
const permission = routePermissions[item.href] || defaultPermission;
|
|
1891
1910
|
const fullPermission = permission.includes(":") ? permission : pageId ? `${permission}:page.${pageId}` : permission;
|
|
1892
1911
|
const hasAccess = permissionMap["*"] === true || permissionMap[fullPermission] === true;
|
|
1912
|
+
logger.debug("PaceAppLayout", "Checking navigation item permission", {
|
|
1913
|
+
itemId: item.id,
|
|
1914
|
+
href: item.href,
|
|
1915
|
+
pageId,
|
|
1916
|
+
permission,
|
|
1917
|
+
fullPermission,
|
|
1918
|
+
hasAccess,
|
|
1919
|
+
permissionInMap: permissionMap[fullPermission]
|
|
1920
|
+
});
|
|
1893
1921
|
return { item, hasAccess };
|
|
1894
1922
|
});
|
|
1895
1923
|
if (!isMounted) return;
|
|
@@ -1906,7 +1934,7 @@ function PaceAppLayout({
|
|
|
1906
1934
|
return () => {
|
|
1907
1935
|
isMounted = false;
|
|
1908
1936
|
};
|
|
1909
|
-
}, [baseMenuItems, filterNavigationByPermissions, pageIdMapping, routePermissions, defaultPermission, can, user?.id, scope]);
|
|
1937
|
+
}, [baseMenuItems, filterNavigationByPermissions, pageIdMapping, routePermissions, defaultPermission, can, user?.id, scope, scopeLoading]);
|
|
1910
1938
|
useEffect3(() => {
|
|
1911
1939
|
if (!roleBasedRouting || routeConfig.length === 0) return;
|
|
1912
1940
|
let isMounted = true;
|
|
@@ -4582,4 +4610,4 @@ export {
|
|
|
4582
4610
|
EventLogoCompact,
|
|
4583
4611
|
EventLogoLarge
|
|
4584
4612
|
};
|
|
4585
|
-
//# sourceMappingURL=chunk-
|
|
4613
|
+
//# sourceMappingURL=chunk-PJEVDATQ.js.map
|