@jmruthers/pace-core 0.5.177 → 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-2W3CH222.js → chunk-PJEVDATQ.js} +34 -10
- 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 +46 -10
- package/src/rbac/hooks/useResourcePermissions.test.ts +26 -3
- package/dist/chunk-2W3CH222.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
|
|
@@ -1856,11 +1856,13 @@ function PaceAppLayout({
|
|
|
1856
1856
|
}
|
|
1857
1857
|
return;
|
|
1858
1858
|
}
|
|
1859
|
-
const
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1859
|
+
const currentScope = scope;
|
|
1860
|
+
if (scopeLoading || !currentScope.appId) {
|
|
1861
|
+
if (isMounted) {
|
|
1862
|
+
setFilteredMenuItems(baseMenuItems);
|
|
1863
|
+
}
|
|
1864
|
+
return;
|
|
1865
|
+
}
|
|
1864
1866
|
try {
|
|
1865
1867
|
const { isSuperAdmin: isSuperAdmin2 } = await import("./api-45XYYO2A.js");
|
|
1866
1868
|
const isSuper = await isSuperAdmin2(user.id);
|
|
@@ -1876,7 +1878,7 @@ function PaceAppLayout({
|
|
|
1876
1878
|
throw error;
|
|
1877
1879
|
}
|
|
1878
1880
|
}
|
|
1879
|
-
if (!
|
|
1881
|
+
if (!currentScope.organisationId) {
|
|
1880
1882
|
if (isMounted) {
|
|
1881
1883
|
setFilteredMenuItems(baseMenuItems);
|
|
1882
1884
|
}
|
|
@@ -1884,9 +1886,22 @@ function PaceAppLayout({
|
|
|
1884
1886
|
}
|
|
1885
1887
|
try {
|
|
1886
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
|
+
});
|
|
1887
1897
|
const permissionMap = await getPermissionMap({
|
|
1888
1898
|
userId: user.id,
|
|
1889
|
-
scope:
|
|
1899
|
+
scope: currentScope
|
|
1900
|
+
});
|
|
1901
|
+
logger.debug("PaceAppLayout", "Permission map received", {
|
|
1902
|
+
permissionCount: Object.keys(permissionMap).length,
|
|
1903
|
+
permissions: Object.keys(permissionMap),
|
|
1904
|
+
hasWildcard: permissionMap["*"] === true
|
|
1890
1905
|
});
|
|
1891
1906
|
const filtered = baseMenuItems.map((item) => {
|
|
1892
1907
|
if (!item.href) return { item, hasAccess: true };
|
|
@@ -1894,6 +1909,15 @@ function PaceAppLayout({
|
|
|
1894
1909
|
const permission = routePermissions[item.href] || defaultPermission;
|
|
1895
1910
|
const fullPermission = permission.includes(":") ? permission : pageId ? `${permission}:page.${pageId}` : permission;
|
|
1896
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
|
+
});
|
|
1897
1921
|
return { item, hasAccess };
|
|
1898
1922
|
});
|
|
1899
1923
|
if (!isMounted) return;
|
|
@@ -1910,7 +1934,7 @@ function PaceAppLayout({
|
|
|
1910
1934
|
return () => {
|
|
1911
1935
|
isMounted = false;
|
|
1912
1936
|
};
|
|
1913
|
-
}, [baseMenuItems, filterNavigationByPermissions, pageIdMapping, routePermissions, defaultPermission, can, user?.id,
|
|
1937
|
+
}, [baseMenuItems, filterNavigationByPermissions, pageIdMapping, routePermissions, defaultPermission, can, user?.id, scope, scopeLoading]);
|
|
1914
1938
|
useEffect3(() => {
|
|
1915
1939
|
if (!roleBasedRouting || routeConfig.length === 0) return;
|
|
1916
1940
|
let isMounted = true;
|
|
@@ -4586,4 +4610,4 @@ export {
|
|
|
4586
4610
|
EventLogoCompact,
|
|
4587
4611
|
EventLogoLarge
|
|
4588
4612
|
};
|
|
4589
|
-
//# sourceMappingURL=chunk-
|
|
4613
|
+
//# sourceMappingURL=chunk-PJEVDATQ.js.map
|