@jmruthers/pace-core 0.5.1 → 0.5.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/dist/{DataTable-GX3XERFJ.js → DataTable-ZQDRE46Q.js} +7 -6
- package/dist/{PublicLoadingSpinner-DztrzuJr.d.ts → PublicLoadingSpinner-Bq_-BeK-.d.ts} +1 -1
- package/dist/RBACProvider-BO4ilsQB.d.ts +63 -0
- package/dist/{UnifiedAuthProvider-w66zSCUf.d.ts → UnifiedAuthProvider-DGQsy-vY.d.ts} +2 -59
- package/dist/{api-ETQ6YJ3C.js → api-H5A3H4IR.js} +2 -2
- package/dist/{chunk-T3XIA4AJ.js → chunk-5H3C2SWM.js} +14 -16
- package/dist/chunk-5H3C2SWM.js.map +1 -0
- package/dist/chunk-5SIXIV7R.js +1925 -0
- package/dist/chunk-5SIXIV7R.js.map +1 -0
- package/dist/chunk-GNTALZV3.js +17 -0
- package/dist/chunk-GNTALZV3.js.map +1 -0
- package/dist/{chunk-C5G2A4PO.js → chunk-GWSBHC4J.js} +6 -6
- package/dist/{chunk-XJK2J4N6.js → chunk-HD7PYDUV.js} +4 -6
- package/dist/{chunk-XJK2J4N6.js.map → chunk-HD7PYDUV.js.map} +1 -1
- package/dist/{chunk-TGDCLPP2.js → chunk-HXX35Q2M.js} +6 -21
- package/dist/chunk-HXX35Q2M.js.map +1 -0
- package/dist/{chunk-5EL3KHOQ.js → chunk-K6B7BLSE.js} +2 -2
- package/dist/{chunk-GSNM5D6H.js → chunk-M4RW7PIP.js} +4 -4
- package/dist/{chunk-U6JDHVC2.js → chunk-PVMYVQSM.js} +6 -8
- package/dist/{chunk-U6JDHVC2.js.map → chunk-PVMYVQSM.js.map} +1 -1
- package/dist/{chunk-6CR3MRZN.js → chunk-QKHFMQ5R.js} +372 -11
- package/dist/{chunk-6CR3MRZN.js.map → chunk-QKHFMQ5R.js.map} +1 -1
- package/dist/chunk-QVYBYGT2.js +428 -0
- package/dist/chunk-QVYBYGT2.js.map +1 -0
- package/dist/{chunk-OEGRKULD.js → chunk-WJARTBCT.js} +56 -1
- package/dist/chunk-WJARTBCT.js.map +1 -0
- package/dist/components.d.ts +4 -3
- package/dist/components.js +16 -162
- package/dist/components.js.map +1 -1
- package/dist/hooks.d.ts +2 -2
- package/dist/hooks.js +7 -9
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.js +152 -17
- package/dist/index.js.map +1 -1
- package/dist/providers.d.ts +3 -2
- package/dist/providers.js +6 -12
- package/dist/rbac/index.d.ts +167 -98
- package/dist/rbac/index.js +48 -1881
- package/dist/rbac/index.js.map +1 -1
- package/dist/styles/core.css +0 -55
- package/dist/types.d.ts +2 -2
- package/dist/{unified-CM7T0aTK.d.ts → unified-CMPjE_fv.d.ts} +1 -1
- package/dist/{usePublicRouteParams-B6i0KtXW.d.ts → usePublicRouteParams-B2OcAsur.d.ts} +1 -1
- package/dist/utils.js +12 -14
- package/dist/utils.js.map +1 -1
- package/docs/api/classes/ErrorBoundary.md +1 -1
- package/docs/api/classes/InvalidScopeError.md +73 -0
- package/docs/api/classes/MissingUserContextError.md +66 -0
- package/docs/api/classes/OrganisationContextRequiredError.md +66 -0
- package/docs/api/classes/PermissionDeniedError.md +73 -0
- package/docs/api/classes/PublicErrorBoundary.md +1 -1
- package/docs/api/classes/RBACAuditManager.md +270 -0
- package/docs/api/classes/RBACCache.md +284 -0
- package/docs/api/classes/RBACEngine.md +141 -0
- package/docs/api/classes/RBACError.md +76 -0
- package/docs/api/classes/RBACNotInitializedError.md +66 -0
- package/docs/api/classes/SecureSupabaseClient.md +135 -0
- package/docs/api/interfaces/AggregateConfig.md +1 -1
- package/docs/api/interfaces/ButtonProps.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 +96 -0
- 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 +235 -0
- package/docs/api/interfaces/EventContextType.md +1 -1
- package/docs/api/interfaces/EventLogoProps.md +1 -1
- package/docs/api/interfaces/EventProviderProps.md +1 -1
- package/docs/api/interfaces/FileSizeLimits.md +1 -1
- package/docs/api/interfaces/FileUploadProps.md +1 -1
- package/docs/api/interfaces/FooterProps.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 +107 -0
- package/docs/api/interfaces/NavigationContextType.md +164 -0
- package/docs/api/interfaces/NavigationGuardProps.md +139 -0
- package/docs/api/interfaces/NavigationItem.md +1 -1
- package/docs/api/interfaces/NavigationMenuProps.md +1 -1
- package/docs/api/interfaces/NavigationProviderProps.md +117 -0
- package/docs/api/interfaces/Organisation.md +1 -1
- package/docs/api/interfaces/OrganisationContextType.md +1 -1
- package/docs/api/interfaces/OrganisationMembership.md +2 -2
- 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 +85 -0
- package/docs/api/interfaces/PagePermissionContextType.md +140 -0
- package/docs/api/interfaces/PagePermissionGuardProps.md +153 -0
- package/docs/api/interfaces/PagePermissionProviderProps.md +119 -0
- package/docs/api/interfaces/PaletteData.md +1 -1
- package/docs/api/interfaces/PermissionEnforcerProps.md +153 -0
- 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 +99 -0
- package/docs/api/interfaces/RBACContextType.md +474 -0
- package/docs/api/interfaces/RBACLogger.md +112 -0
- package/docs/api/interfaces/RBACProviderProps.md +107 -0
- package/docs/api/interfaces/RoleBasedRouterContextType.md +151 -0
- package/docs/api/interfaces/RoleBasedRouterProps.md +156 -0
- package/docs/api/interfaces/RouteAccessRecord.md +107 -0
- package/docs/api/interfaces/RouteConfig.md +121 -0
- package/docs/api/interfaces/SecureDataContextType.md +168 -0
- package/docs/api/interfaces/SecureDataProviderProps.md +132 -0
- 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/ToastActionElement.md +1 -1
- package/docs/api/interfaces/ToastProps.md +1 -1
- package/docs/api/interfaces/UnifiedAuthContextType.md +85 -85
- 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/UsePublicEventLogoOptions.md +1 -1
- package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
- package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
- package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
- package/docs/api/interfaces/UserEventAccess.md +11 -11
- package/docs/api/interfaces/UserMenuProps.md +1 -1
- package/docs/api/interfaces/UserProfile.md +1 -1
- package/docs/api/modules.md +2244 -3
- package/docs/migration-guide.md +43 -18
- package/docs/styles/README.md +187 -98
- package/docs/usage.md +32 -7
- package/package.json +2 -2
- package/src/components/Footer/Footer.test.tsx +482 -0
- package/src/components/Form/Form.test.tsx +1158 -0
- package/src/components/Header/Header.test.tsx +582 -0
- package/src/components/Header/Header.tsx +1 -1
- package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +489 -0
- package/src/components/Input/Input.test.tsx +466 -0
- package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +450 -0
- package/src/components/LoginForm/LoginForm.test.tsx +816 -0
- package/src/components/NavigationMenu/NavigationMenu.test.tsx +883 -0
- package/src/components/OrganisationSelector/OrganisationSelector.test.tsx +748 -0
- package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +891 -0
- package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +475 -0
- package/src/components/PasswordReset/PasswordChangeForm.test.tsx +621 -0
- package/src/components/PasswordReset/PasswordResetForm.test.tsx +605 -0
- package/src/components/Select/Select.test.tsx +948 -0
- package/src/components/SuperAdminGuard.tsx +1 -1
- package/src/components/Toast/Toast.test.tsx +586 -0
- package/src/components/Tooltip/Tooltip.test.tsx +852 -0
- package/src/components/UserMenu/UserMenu.test.tsx +702 -0
- package/src/components/UserMenu/UserMenu.tsx +2 -2
- package/src/hooks/useDebounce.test.ts +375 -0
- package/src/hooks/useOrganisationPermissions.test.ts +528 -0
- package/src/hooks/useOrganisationSecurity.test.ts +734 -0
- package/src/hooks/usePermissionCache.test.ts +542 -0
- package/src/hooks/usePermissionCache.ts +1 -1
- package/src/index.ts +2 -3
- package/src/providers/UnifiedAuthProvider.tsx +2 -2
- package/src/providers/index.ts +3 -1
- package/src/rbac/__tests__/integration.test.tsx +218 -0
- package/src/rbac/api.test.ts +952 -0
- package/src/rbac/components/__tests__/NavigationGuard.test.tsx +843 -0
- package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +1007 -0
- package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +806 -0
- package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +741 -0
- package/src/rbac/hooks/index.ts +21 -0
- package/src/rbac/hooks/useCan.test.ts +461 -0
- package/src/rbac/hooks/usePermissions.test.ts +364 -0
- package/src/rbac/hooks/usePermissions.ts +567 -0
- package/src/rbac/hooks/useRBAC.simple.test.ts +90 -0
- package/src/rbac/hooks/useRBAC.test.ts +551 -0
- package/src/{hooks → rbac/hooks}/useRBAC.ts +7 -7
- package/src/rbac/index.ts +5 -10
- package/src/{providers → rbac/providers}/RBACProvider.tsx +6 -6
- package/src/rbac/providers/__tests__/RBACProvider.test.tsx +687 -0
- package/src/rbac/providers/index.ts +11 -0
- package/src/styles/core.css +0 -55
- package/src/utils/formatDate.test.ts +241 -0
- package/dist/chunk-AUE24LVR.js +0 -268
- package/dist/chunk-AUE24LVR.js.map +0 -1
- package/dist/chunk-COBPIXXQ.js +0 -379
- package/dist/chunk-COBPIXXQ.js.map +0 -1
- package/dist/chunk-OEGRKULD.js.map +0 -1
- package/dist/chunk-OYRY44Q2.js +0 -62
- package/dist/chunk-OYRY44Q2.js.map +0 -1
- package/dist/chunk-T3XIA4AJ.js.map +0 -1
- package/dist/chunk-TGDCLPP2.js.map +0 -1
- package/src/components/RBAC/PagePermissionGuard.tsx +0 -287
- package/src/components/RBAC/RBACGuard.tsx +0 -143
- package/src/components/RBAC/RBACProvider.tsx +0 -186
- package/src/components/RBAC/RoleBasedContent.tsx +0 -129
- package/src/components/RBAC/index.ts +0 -23
- package/src/rbac/hooks.ts +0 -570
- /package/dist/{DataTable-GX3XERFJ.js.map → DataTable-ZQDRE46Q.js.map} +0 -0
- /package/dist/{api-ETQ6YJ3C.js.map → api-H5A3H4IR.js.map} +0 -0
- /package/dist/{chunk-C5G2A4PO.js.map → chunk-GWSBHC4J.js.map} +0 -0
- /package/dist/{chunk-5EL3KHOQ.js.map → chunk-K6B7BLSE.js.map} +0 -0
- /package/dist/{chunk-GSNM5D6H.js.map → chunk-M4RW7PIP.js.map} +0 -0
package/dist/components.js
CHANGED
|
@@ -49,7 +49,7 @@ import {
|
|
|
49
49
|
usePublicPageContext as usePublicPageContext2,
|
|
50
50
|
useStorage,
|
|
51
51
|
useToast
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-5H3C2SWM.js";
|
|
53
53
|
import {
|
|
54
54
|
Alert,
|
|
55
55
|
AlertDescription,
|
|
@@ -72,14 +72,14 @@ import {
|
|
|
72
72
|
SelectSeparator,
|
|
73
73
|
SelectTrigger,
|
|
74
74
|
SelectValue
|
|
75
|
-
} from "./chunk-
|
|
76
|
-
import "./chunk-AUE24LVR.js";
|
|
77
|
-
import "./chunk-C5G2A4PO.js";
|
|
78
|
-
import "./chunk-7BNPOCLL.js";
|
|
75
|
+
} from "./chunk-M4RW7PIP.js";
|
|
79
76
|
import {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
77
|
+
useRBAC
|
|
78
|
+
} from "./chunk-QVYBYGT2.js";
|
|
79
|
+
import "./chunk-GWSBHC4J.js";
|
|
80
|
+
import "./chunk-7BNPOCLL.js";
|
|
81
|
+
import "./chunk-GNTALZV3.js";
|
|
82
|
+
import "./chunk-HXX35Q2M.js";
|
|
83
83
|
import {
|
|
84
84
|
DefaultPublicErrorFallback,
|
|
85
85
|
PublicErrorBoundary,
|
|
@@ -87,12 +87,8 @@ import {
|
|
|
87
87
|
useErrorBoundary,
|
|
88
88
|
useIsPublicPage,
|
|
89
89
|
usePublicPageContext
|
|
90
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-K6B7BLSE.js";
|
|
91
91
|
import "./chunk-SS3E6QLB.js";
|
|
92
|
-
import {
|
|
93
|
-
init_OrganisationProvider,
|
|
94
|
-
useOrganisations
|
|
95
|
-
} from "./chunk-COBPIXXQ.js";
|
|
96
92
|
import {
|
|
97
93
|
Button,
|
|
98
94
|
Dialog,
|
|
@@ -116,17 +112,16 @@ import {
|
|
|
116
112
|
init_Tooltip2 as init_Tooltip,
|
|
117
113
|
init_UnifiedAuthProvider,
|
|
118
114
|
useUnifiedAuth
|
|
119
|
-
} from "./chunk-
|
|
115
|
+
} from "./chunk-QKHFMQ5R.js";
|
|
120
116
|
import "./chunk-YDJW5XTN.js";
|
|
121
117
|
import {
|
|
122
118
|
LoadingSpinner
|
|
123
119
|
} from "./chunk-CDQ3PX7L.js";
|
|
124
120
|
import "./chunk-74C6SNEC.js";
|
|
125
|
-
import "./chunk-OEGRKULD.js";
|
|
126
121
|
import {
|
|
127
122
|
cn,
|
|
128
123
|
init_cn
|
|
129
|
-
} from "./chunk-
|
|
124
|
+
} from "./chunk-WJARTBCT.js";
|
|
130
125
|
import "./chunk-PLDDJCW6.js";
|
|
131
126
|
|
|
132
127
|
// src/components/index.ts
|
|
@@ -321,147 +316,6 @@ var FormFieldset = React2.forwardRef(
|
|
|
321
316
|
);
|
|
322
317
|
FormFieldset.displayName = "FormFieldset";
|
|
323
318
|
|
|
324
|
-
// src/hooks/useRBAC.ts
|
|
325
|
-
init_UnifiedAuthProvider();
|
|
326
|
-
init_OrganisationProvider();
|
|
327
|
-
init_EventProvider();
|
|
328
|
-
import { useState as useState2, useEffect as useEffect2, useCallback, useMemo } from "react";
|
|
329
|
-
function useRBAC(pageId) {
|
|
330
|
-
const { user, session, supabase, appName } = useUnifiedAuth();
|
|
331
|
-
const { selectedOrganisation } = useOrganisations();
|
|
332
|
-
let selectedEvent = null;
|
|
333
|
-
try {
|
|
334
|
-
const eventsContext = useEvents();
|
|
335
|
-
selectedEvent = eventsContext.selectedEvent;
|
|
336
|
-
} catch (error2) {
|
|
337
|
-
console.debug("useRBAC: EventProvider not available, continuing without event context");
|
|
338
|
-
}
|
|
339
|
-
const [globalRole, setGlobalRole] = useState2(null);
|
|
340
|
-
const [organisationRole, setOrganisationRole] = useState2(null);
|
|
341
|
-
const [eventAppRole, setEventAppRole] = useState2(null);
|
|
342
|
-
const [permissions, setPermissions] = useState2([]);
|
|
343
|
-
const [isLoading, setIsLoading] = useState2(false);
|
|
344
|
-
const [error, setError] = useState2(null);
|
|
345
|
-
const loadRBACContext = useCallback(async () => {
|
|
346
|
-
if (!user || !session || !supabase || !appName) {
|
|
347
|
-
console.log("[useRBAC] Missing required dependencies, clearing RBAC state");
|
|
348
|
-
setGlobalRole(null);
|
|
349
|
-
setOrganisationRole(null);
|
|
350
|
-
setEventAppRole(null);
|
|
351
|
-
setPermissions([]);
|
|
352
|
-
return;
|
|
353
|
-
}
|
|
354
|
-
setIsLoading(true);
|
|
355
|
-
setError(null);
|
|
356
|
-
try {
|
|
357
|
-
const { data: appData, error: appError } = await supabase.from("rbac_apps").select("id").eq("name", appName).eq("is_active", true).single();
|
|
358
|
-
if (appError || !appData) {
|
|
359
|
-
console.warn("App not found or inactive:", appName);
|
|
360
|
-
setIsLoading(false);
|
|
361
|
-
return;
|
|
362
|
-
}
|
|
363
|
-
const { data, error: rpcError } = await supabase.rpc("get_rbac_permissions", {
|
|
364
|
-
p_user_id: user.id,
|
|
365
|
-
p_app_id: appData.id,
|
|
366
|
-
p_event_id: selectedEvent?.event_id || null,
|
|
367
|
-
p_organisation_id: selectedOrganisation?.id || null,
|
|
368
|
-
p_page_id: pageId || null
|
|
369
|
-
});
|
|
370
|
-
if (rpcError) {
|
|
371
|
-
throw new Error(`Failed to load RBAC permissions: ${rpcError.message}`);
|
|
372
|
-
}
|
|
373
|
-
if (data) {
|
|
374
|
-
const globalPerms = data.filter((p) => p.permission_type === "all_permissions");
|
|
375
|
-
const orgPerms = data.filter((p) => p.permission_type === "organisation_access");
|
|
376
|
-
const eventPerms = data.filter((p) => p.permission_type === "event_app_access");
|
|
377
|
-
setGlobalRole(globalPerms.length > 0 ? "super_admin" : null);
|
|
378
|
-
setOrganisationRole(orgPerms.length > 0 ? orgPerms[0].role_name : null);
|
|
379
|
-
setEventAppRole(eventPerms.length > 0 ? eventPerms[0].role_name : null);
|
|
380
|
-
setPermissions(data);
|
|
381
|
-
} else {
|
|
382
|
-
setPermissions([]);
|
|
383
|
-
}
|
|
384
|
-
} catch (err) {
|
|
385
|
-
console.error("RBAC Context Loading Error:", err);
|
|
386
|
-
setError(err instanceof Error ? err : new Error("Unknown error loading RBAC context"));
|
|
387
|
-
setPermissions([]);
|
|
388
|
-
} finally {
|
|
389
|
-
setIsLoading(false);
|
|
390
|
-
}
|
|
391
|
-
}, [user?.id, session, supabase, appName, selectedEvent?.event_id, selectedOrganisation?.id, pageId]);
|
|
392
|
-
const hasPermission = useCallback(async (operation, targetPageId) => {
|
|
393
|
-
if (!user || !session || !supabase || !appName) return false;
|
|
394
|
-
if (globalRole === "super_admin") {
|
|
395
|
-
return true;
|
|
396
|
-
}
|
|
397
|
-
try {
|
|
398
|
-
const { data: appData, error: appError } = await supabase.from("rbac_apps").select("id").eq("name", appName).eq("is_active", true).single();
|
|
399
|
-
if (appError || !appData) {
|
|
400
|
-
console.warn("App not found or inactive:", appName);
|
|
401
|
-
return false;
|
|
402
|
-
}
|
|
403
|
-
const { data, error: error2 } = await supabase.rpc("check_page_permission", {
|
|
404
|
-
p_user_id: user.id,
|
|
405
|
-
p_app_id: appData.id,
|
|
406
|
-
p_page_id: targetPageId || pageId || "default",
|
|
407
|
-
p_operation: operation,
|
|
408
|
-
p_event_id: selectedEvent?.event_id,
|
|
409
|
-
p_organisation_id: selectedOrganisation?.id
|
|
410
|
-
});
|
|
411
|
-
if (error2) {
|
|
412
|
-
console.error("Permission check failed:", error2);
|
|
413
|
-
return false;
|
|
414
|
-
}
|
|
415
|
-
return data === true;
|
|
416
|
-
} catch (err) {
|
|
417
|
-
console.error("Permission check error:", err);
|
|
418
|
-
return false;
|
|
419
|
-
}
|
|
420
|
-
}, [user, supabase, appName, selectedEvent, selectedOrganisation, pageId, globalRole]);
|
|
421
|
-
const hasGlobalPermission = useCallback((permission) => {
|
|
422
|
-
if (globalRole === "super_admin") {
|
|
423
|
-
return true;
|
|
424
|
-
}
|
|
425
|
-
if (permission === "super_admin") {
|
|
426
|
-
return globalRole === "super_admin";
|
|
427
|
-
}
|
|
428
|
-
if (permission === "org_admin") {
|
|
429
|
-
return organisationRole === "org_admin" || globalRole === "super_admin";
|
|
430
|
-
}
|
|
431
|
-
return false;
|
|
432
|
-
}, [globalRole, organisationRole]);
|
|
433
|
-
const isSuperAdmin = useMemo(() => globalRole === "super_admin", [globalRole]);
|
|
434
|
-
const isOrgAdmin = useMemo(() => organisationRole === "org_admin", [organisationRole]);
|
|
435
|
-
const isEventAdmin = useMemo(() => eventAppRole === "event_admin", [eventAppRole]);
|
|
436
|
-
const canManageOrganisation = useMemo(
|
|
437
|
-
() => isSuperAdmin || isOrgAdmin,
|
|
438
|
-
[isSuperAdmin, isOrgAdmin]
|
|
439
|
-
);
|
|
440
|
-
const canManageEvent = useMemo(
|
|
441
|
-
() => isSuperAdmin || isEventAdmin,
|
|
442
|
-
[isSuperAdmin, isEventAdmin]
|
|
443
|
-
);
|
|
444
|
-
useEffect2(() => {
|
|
445
|
-
loadRBACContext();
|
|
446
|
-
}, [loadRBACContext]);
|
|
447
|
-
return {
|
|
448
|
-
user,
|
|
449
|
-
// Add user to the returned context
|
|
450
|
-
globalRole,
|
|
451
|
-
organisationRole,
|
|
452
|
-
eventAppRole,
|
|
453
|
-
hasPermission,
|
|
454
|
-
hasGlobalPermission,
|
|
455
|
-
isSuperAdmin,
|
|
456
|
-
isOrgAdmin,
|
|
457
|
-
isEventAdmin,
|
|
458
|
-
canManageOrganisation,
|
|
459
|
-
canManageEvent,
|
|
460
|
-
isLoading,
|
|
461
|
-
error
|
|
462
|
-
};
|
|
463
|
-
}
|
|
464
|
-
|
|
465
319
|
// src/components/SuperAdminGuard.tsx
|
|
466
320
|
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
467
321
|
function SuperAdminGuard({
|
|
@@ -525,7 +379,7 @@ function SuperAdminDebugPanel() {
|
|
|
525
379
|
init_cn();
|
|
526
380
|
|
|
527
381
|
// src/components/PrintLayout/PrintLayoutContext.tsx
|
|
528
|
-
import { createContext, useContext, useState as
|
|
382
|
+
import { createContext, useContext, useState as useState2, useEffect as useEffect2 } from "react";
|
|
529
383
|
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
530
384
|
var PrintLayoutContext = createContext(void 0);
|
|
531
385
|
function PrintLayoutProvider({
|
|
@@ -535,8 +389,8 @@ function PrintLayoutProvider({
|
|
|
535
389
|
hasFirstPageHeader,
|
|
536
390
|
hasSubsequentPageHeader
|
|
537
391
|
}) {
|
|
538
|
-
const [isFirstPage, setIsFirstPage] =
|
|
539
|
-
|
|
392
|
+
const [isFirstPage, setIsFirstPage] = useState2(true);
|
|
393
|
+
useEffect2(() => {
|
|
540
394
|
const handleResize = () => {
|
|
541
395
|
setIsFirstPage(true);
|
|
542
396
|
};
|
|
@@ -2006,7 +1860,7 @@ function PrintDivider({
|
|
|
2006
1860
|
|
|
2007
1861
|
// src/components/PrintButton/PrintButton.tsx
|
|
2008
1862
|
init_cn();
|
|
2009
|
-
import { useState as
|
|
1863
|
+
import { useState as useState3 } from "react";
|
|
2010
1864
|
import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
2011
1865
|
function PrintButton({
|
|
2012
1866
|
children,
|
|
@@ -2029,7 +1883,7 @@ function PrintButton({
|
|
|
2029
1883
|
className,
|
|
2030
1884
|
...props
|
|
2031
1885
|
}) {
|
|
2032
|
-
const [isPrinting, setIsPrinting] =
|
|
1886
|
+
const [isPrinting, setIsPrinting] = useState3(false);
|
|
2033
1887
|
const getVariantClasses = (variant2) => {
|
|
2034
1888
|
switch (variant2) {
|
|
2035
1889
|
case "secondary":
|