@skylabs-digital/react-identity-access 2.12.0 → 2.14.0
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/components/LandingRoute.d.ts +13 -0
- package/dist/components/LandingRoute.d.ts.map +1 -1
- package/dist/components/ProtectedRoute.d.ts +20 -0
- package/dist/components/ProtectedRoute.d.ts.map +1 -1
- package/dist/components/TenantRoute.d.ts +13 -0
- package/dist/components/TenantRoute.d.ts.map +1 -1
- package/dist/components/ZoneRoute.d.ts +28 -0
- package/dist/components/ZoneRoute.d.ts.map +1 -0
- package/dist/hooks/useZoneNavigation.d.ts +17 -0
- package/dist/hooks/useZoneNavigation.d.ts.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +1720 -1449
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/providers/RoutingProvider.d.ts +56 -0
- package/dist/providers/RoutingProvider.d.ts.map +1 -0
- package/dist/types/zoneRouting.d.ts +122 -0
- package/dist/types/zoneRouting.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { RoutingConfig, ZoneRoots, ZonePresets, ZonePresetConfig, AccessDeniedReason, ReturnToStorage } from '../types/zoneRouting';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Context value provided by RoutingProvider
|
|
6
|
+
*/
|
|
7
|
+
export interface RoutingContextValue {
|
|
8
|
+
zoneRoots: Required<ZoneRoots>;
|
|
9
|
+
presets: ZonePresets;
|
|
10
|
+
loadingFallback: ReactNode;
|
|
11
|
+
accessDeniedFallback: ReactNode;
|
|
12
|
+
onAccessDenied?: (reason: AccessDeniedReason) => void;
|
|
13
|
+
returnToParam: string;
|
|
14
|
+
returnToStorage: ReturnToStorage;
|
|
15
|
+
}
|
|
16
|
+
export interface RoutingProviderProps {
|
|
17
|
+
config?: RoutingConfig;
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* RoutingProvider - Global configuration for zone-based routing
|
|
22
|
+
*
|
|
23
|
+
* Provides default redirect paths, presets, and fallbacks that ZoneRoute
|
|
24
|
+
* components will use. Can be customized per-application.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```tsx
|
|
28
|
+
* <RoutingProvider config={{
|
|
29
|
+
* zoneRoots: {
|
|
30
|
+
* tenantGuest: '/auth/login',
|
|
31
|
+
* tenantUser: '/app/dashboard',
|
|
32
|
+
* tenantAdmin: '/admin',
|
|
33
|
+
* },
|
|
34
|
+
* loadingFallback: <Spinner />,
|
|
35
|
+
* onAccessDenied: (reason) => console.log('Access denied:', reason),
|
|
36
|
+
* }}>
|
|
37
|
+
* <App />
|
|
38
|
+
* </RoutingProvider>
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function RoutingProvider({ config, children }: RoutingProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
42
|
+
/**
|
|
43
|
+
* Hook to access routing configuration
|
|
44
|
+
* @throws Error if used outside RoutingProvider
|
|
45
|
+
*/
|
|
46
|
+
export declare function useRouting(): RoutingContextValue;
|
|
47
|
+
/**
|
|
48
|
+
* Optional hook that returns RoutingContext if available, defaults otherwise.
|
|
49
|
+
* Useful for ZoneRoute which should work with or without RoutingProvider.
|
|
50
|
+
*/
|
|
51
|
+
export declare function useRoutingOptional(): RoutingContextValue;
|
|
52
|
+
/**
|
|
53
|
+
* Get a specific preset configuration
|
|
54
|
+
*/
|
|
55
|
+
export declare function useZonePreset(presetName: keyof ZonePresets | string): ZonePresetConfig | undefined;
|
|
56
|
+
//# sourceMappingURL=RoutingProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RoutingProvider.d.ts","sourceRoot":"","sources":["../../src/providers/RoutingProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,SAAS,EAAW,MAAM,OAAO,CAAC;AACtE,OAAO,EACL,aAAa,EACb,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAGhB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,eAAe,EAAE,SAAS,CAAC;IAC3B,oBAAoB,EAAE,SAAS,CAAC;IAChC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,eAAe,CAAC;CAClC;AAID,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,EAAE,MAAW,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CAyB9E;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,mBAAmB,CAMhD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,mBAAmB,CAiBxD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,WAAW,GAAG,MAAM,GACrC,gBAAgB,GAAG,SAAS,CAG9B"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { UserType } from './api';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Access mode for zone requirements
|
|
6
|
+
* - 'required': Must match condition (redirect if not)
|
|
7
|
+
* - 'forbidden': Must NOT match condition (redirect if matches)
|
|
8
|
+
* - 'optional': Can be either (no redirect)
|
|
9
|
+
*/
|
|
10
|
+
export type AccessMode = 'required' | 'forbidden' | 'optional';
|
|
11
|
+
/**
|
|
12
|
+
* Reason types for access denial
|
|
13
|
+
*/
|
|
14
|
+
export type AccessDeniedType = 'no_tenant' | 'has_tenant' | 'not_authenticated' | 'already_authenticated' | 'wrong_user_type' | 'missing_permissions';
|
|
15
|
+
/**
|
|
16
|
+
* Detailed reason object passed to callbacks when access is denied
|
|
17
|
+
*/
|
|
18
|
+
export interface AccessDeniedReason {
|
|
19
|
+
type: AccessDeniedType;
|
|
20
|
+
required?: {
|
|
21
|
+
tenant?: AccessMode;
|
|
22
|
+
auth?: AccessMode;
|
|
23
|
+
userType?: UserType | UserType[];
|
|
24
|
+
permissions?: string[];
|
|
25
|
+
};
|
|
26
|
+
current?: {
|
|
27
|
+
hasTenant: boolean;
|
|
28
|
+
isAuthenticated: boolean;
|
|
29
|
+
userType?: UserType;
|
|
30
|
+
permissions?: string[];
|
|
31
|
+
};
|
|
32
|
+
redirectTo: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Zone root paths for automatic redirects
|
|
36
|
+
*/
|
|
37
|
+
export interface ZoneRoots {
|
|
38
|
+
publicGuest?: string;
|
|
39
|
+
publicUser?: string;
|
|
40
|
+
publicAdmin?: string;
|
|
41
|
+
tenantGuest?: string;
|
|
42
|
+
tenantUser?: string;
|
|
43
|
+
tenantAdmin?: string;
|
|
44
|
+
default?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Default zone roots
|
|
48
|
+
*/
|
|
49
|
+
export declare const DEFAULT_ZONE_ROOTS: Required<ZoneRoots>;
|
|
50
|
+
/**
|
|
51
|
+
* Preset zone configuration
|
|
52
|
+
*/
|
|
53
|
+
export interface ZonePresetConfig {
|
|
54
|
+
tenant?: AccessMode;
|
|
55
|
+
auth?: AccessMode;
|
|
56
|
+
userType?: UserType | UserType[];
|
|
57
|
+
requiredPermissions?: string[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Built-in zone presets
|
|
61
|
+
*/
|
|
62
|
+
export interface ZonePresets {
|
|
63
|
+
landing: ZonePresetConfig;
|
|
64
|
+
publicOnly: ZonePresetConfig;
|
|
65
|
+
login: ZonePresetConfig;
|
|
66
|
+
guest: ZonePresetConfig;
|
|
67
|
+
authenticated: ZonePresetConfig;
|
|
68
|
+
tenant: ZonePresetConfig;
|
|
69
|
+
tenantOpen: ZonePresetConfig;
|
|
70
|
+
tenantAuth: ZonePresetConfig;
|
|
71
|
+
user: ZonePresetConfig;
|
|
72
|
+
admin: ZonePresetConfig;
|
|
73
|
+
open: ZonePresetConfig;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Default preset configurations
|
|
77
|
+
*/
|
|
78
|
+
export declare const DEFAULT_ZONE_PRESETS: ZonePresets;
|
|
79
|
+
/**
|
|
80
|
+
* Return URL storage options
|
|
81
|
+
*/
|
|
82
|
+
export type ReturnToStorage = 'url' | 'session' | 'local';
|
|
83
|
+
/**
|
|
84
|
+
* Routing configuration for AuthProvider
|
|
85
|
+
*/
|
|
86
|
+
export interface RoutingConfig {
|
|
87
|
+
zoneRoots?: ZoneRoots;
|
|
88
|
+
presets?: Partial<ZonePresets>;
|
|
89
|
+
loadingFallback?: ReactNode;
|
|
90
|
+
accessDeniedFallback?: ReactNode;
|
|
91
|
+
onAccessDenied?: (reason: AccessDeniedReason) => void;
|
|
92
|
+
returnToParam?: string;
|
|
93
|
+
returnToStorage?: ReturnToStorage;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Props for ZoneRoute component
|
|
97
|
+
*/
|
|
98
|
+
export interface ZoneRouteProps {
|
|
99
|
+
children: ReactNode;
|
|
100
|
+
preset?: keyof ZonePresets | string;
|
|
101
|
+
tenant?: AccessMode;
|
|
102
|
+
auth?: AccessMode;
|
|
103
|
+
userType?: UserType | UserType[];
|
|
104
|
+
requiredPermissions?: string[];
|
|
105
|
+
requireAllPermissions?: boolean;
|
|
106
|
+
returnTo?: boolean | string;
|
|
107
|
+
onAccessDenied?: (reason: AccessDeniedReason) => void;
|
|
108
|
+
redirectTo?: string;
|
|
109
|
+
loadingFallback?: ReactNode;
|
|
110
|
+
accessDeniedFallback?: ReactNode;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Zone navigation hook return type
|
|
114
|
+
*/
|
|
115
|
+
export interface UseZoneNavigationReturn {
|
|
116
|
+
returnToUrl: string | null;
|
|
117
|
+
clearReturnTo: () => void;
|
|
118
|
+
setReturnTo: (url: string) => void;
|
|
119
|
+
navigateToZone: (zone: keyof ZoneRoots) => void;
|
|
120
|
+
getSmartRedirect: () => string;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=zoneRouting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zoneRouting.d.ts","sourceRoot":"","sources":["../../src/types/zoneRouting.ts"],"names":[],"mappings":"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"}
|