@hanzo/iam 0.1.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/react.js ADDED
@@ -0,0 +1,422 @@
1
+ /**
2
+ * React bindings for @hanzo/iam.
3
+ *
4
+ * Provides a context provider, auth hooks, and org/project switching
5
+ * that can be dropped into any React application.
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * import { IamProvider, useIam, useOrganizations } from '@hanzo/iam/react'
10
+ *
11
+ * function App() {
12
+ * return (
13
+ * <IamProvider config={{
14
+ * serverUrl: 'https://iam.hanzo.ai',
15
+ * clientId: 'my-app',
16
+ * redirectUri: `${window.location.origin}/auth/callback`,
17
+ * }}>
18
+ * <MyApp />
19
+ * </IamProvider>
20
+ * )
21
+ * }
22
+ *
23
+ * function MyApp() {
24
+ * const { user, isAuthenticated, login, logout } = useIam()
25
+ * const { organizations, currentOrg, switchOrg } = useOrganizations()
26
+ *
27
+ * if (!isAuthenticated) return <button onClick={() => login()}>Log in</button>
28
+ * return <div>Welcome, {user?.displayName}</div>
29
+ * }
30
+ * ```
31
+ *
32
+ * @packageDocumentation
33
+ */
34
+ import { createContext, createElement, useCallback, useContext, useEffect, useMemo, useRef, useState, } from "react";
35
+ import { BrowserIamSdk } from "./browser.js";
36
+ import { IamClient } from "./client.js";
37
+ // ---------------------------------------------------------------------------
38
+ // Context
39
+ // ---------------------------------------------------------------------------
40
+ const IamContext = createContext(null);
41
+ IamContext.displayName = "HanzoIamContext";
42
+ // Storage keys for tenant persistence
43
+ const STORAGE_ORG_KEY = "hanzo_iam_current_org";
44
+ const STORAGE_PROJECT_KEY = "hanzo_iam_current_project";
45
+ const STORAGE_EXPIRES_KEY = "hanzo_iam_expires_at";
46
+ // ---------------------------------------------------------------------------
47
+ // IamProvider
48
+ // ---------------------------------------------------------------------------
49
+ /**
50
+ * Root provider for Hanzo IAM in React applications.
51
+ *
52
+ * Wrap your app (or a subtree) with this provider to enable IAM auth.
53
+ * Manages the BrowserIamSdk instance, token lifecycle, and auth state.
54
+ */
55
+ export function IamProvider(props) {
56
+ const { config, autoInit = true, onAuthChange, children } = props;
57
+ const sdk = useMemo(() => new BrowserIamSdk(config),
58
+ // eslint-disable-next-line react-hooks/exhaustive-deps
59
+ [config.serverUrl, config.clientId, config.redirectUri]);
60
+ const [user, setUser] = useState(null);
61
+ const [isAuthenticated, setIsAuthenticated] = useState(false);
62
+ const [isLoading, setIsLoading] = useState(autoInit);
63
+ const [accessToken, setAccessToken] = useState(sdk.getAccessToken());
64
+ const [error, setError] = useState(null);
65
+ const refreshTimerRef = useRef(null);
66
+ // Schedule token refresh ~60s before expiry
67
+ const scheduleRefresh = useCallback(() => {
68
+ if (refreshTimerRef.current)
69
+ clearTimeout(refreshTimerRef.current);
70
+ if (sdk.isTokenExpired())
71
+ return;
72
+ const storage = config.storage ?? sessionStorage;
73
+ const expiresAtStr = storage.getItem(STORAGE_EXPIRES_KEY);
74
+ if (!expiresAtStr)
75
+ return;
76
+ const msUntilRefresh = Number(expiresAtStr) - Date.now() - 60_000;
77
+ if (msUntilRefresh <= 0) {
78
+ sdk
79
+ .refreshAccessToken()
80
+ .then((tokens) => {
81
+ setAccessToken(tokens.access_token);
82
+ scheduleRefresh();
83
+ })
84
+ .catch(() => {
85
+ setIsAuthenticated(false);
86
+ setUser(null);
87
+ setAccessToken(null);
88
+ });
89
+ return;
90
+ }
91
+ refreshTimerRef.current = setTimeout(async () => {
92
+ try {
93
+ const tokens = await sdk.refreshAccessToken();
94
+ setAccessToken(tokens.access_token);
95
+ scheduleRefresh();
96
+ }
97
+ catch {
98
+ setIsAuthenticated(false);
99
+ setUser(null);
100
+ setAccessToken(null);
101
+ }
102
+ }, msUntilRefresh);
103
+ }, [sdk, config.storage]);
104
+ // Auto-init: check stored tokens on mount
105
+ useEffect(() => {
106
+ if (!autoInit) {
107
+ setIsLoading(false);
108
+ return;
109
+ }
110
+ let cancelled = false;
111
+ const init = async () => {
112
+ try {
113
+ const token = await sdk.getValidAccessToken();
114
+ if (cancelled)
115
+ return;
116
+ if (token) {
117
+ setAccessToken(token);
118
+ setIsAuthenticated(true);
119
+ try {
120
+ const info = await sdk.getUserInfo();
121
+ if (!cancelled)
122
+ setUser(info);
123
+ }
124
+ catch {
125
+ // Token valid but userinfo failed — still authenticated
126
+ }
127
+ scheduleRefresh();
128
+ onAuthChange?.(true);
129
+ }
130
+ else {
131
+ onAuthChange?.(false);
132
+ }
133
+ }
134
+ catch (err) {
135
+ if (!cancelled) {
136
+ setError(err instanceof Error ? err : new Error(String(err)));
137
+ onAuthChange?.(false);
138
+ }
139
+ }
140
+ finally {
141
+ if (!cancelled)
142
+ setIsLoading(false);
143
+ }
144
+ };
145
+ init();
146
+ return () => {
147
+ cancelled = true;
148
+ };
149
+ // eslint-disable-next-line react-hooks/exhaustive-deps
150
+ }, [sdk, autoInit]);
151
+ // Cleanup refresh timer on unmount
152
+ useEffect(() => {
153
+ return () => {
154
+ if (refreshTimerRef.current)
155
+ clearTimeout(refreshTimerRef.current);
156
+ };
157
+ }, []);
158
+ // Complete authentication after login/callback
159
+ const completeAuth = useCallback(async (tokens) => {
160
+ setAccessToken(tokens.access_token);
161
+ setIsAuthenticated(true);
162
+ try {
163
+ const info = await sdk.getUserInfo();
164
+ setUser(info);
165
+ }
166
+ catch {
167
+ // ok — token valid, userinfo is optional
168
+ }
169
+ scheduleRefresh();
170
+ onAuthChange?.(true);
171
+ }, [sdk, scheduleRefresh, onAuthChange]);
172
+ const login = useCallback(async (params) => {
173
+ setError(null);
174
+ await sdk.signinRedirect(params);
175
+ }, [sdk]);
176
+ const loginPopup = useCallback(async (params) => {
177
+ setError(null);
178
+ try {
179
+ const tokens = await sdk.signinPopup(params);
180
+ await completeAuth(tokens);
181
+ }
182
+ catch (err) {
183
+ const e = err instanceof Error ? err : new Error(String(err));
184
+ setError(e);
185
+ throw e;
186
+ }
187
+ }, [sdk, completeAuth]);
188
+ const handleCallback = useCallback(async (callbackUrl) => {
189
+ setError(null);
190
+ try {
191
+ const tokens = await sdk.handleCallback(callbackUrl);
192
+ await completeAuth(tokens);
193
+ return tokens;
194
+ }
195
+ catch (err) {
196
+ const e = err instanceof Error ? err : new Error(String(err));
197
+ setError(e);
198
+ throw e;
199
+ }
200
+ }, [sdk, completeAuth]);
201
+ const logout = useCallback(() => {
202
+ sdk.clearTokens();
203
+ setUser(null);
204
+ setIsAuthenticated(false);
205
+ setAccessToken(null);
206
+ setError(null);
207
+ if (refreshTimerRef.current)
208
+ clearTimeout(refreshTimerRef.current);
209
+ try {
210
+ localStorage.removeItem(STORAGE_ORG_KEY);
211
+ localStorage.removeItem(STORAGE_PROJECT_KEY);
212
+ }
213
+ catch {
214
+ /* ok */
215
+ }
216
+ onAuthChange?.(false);
217
+ }, [sdk, onAuthChange]);
218
+ const value = useMemo(() => ({
219
+ sdk,
220
+ config,
221
+ user,
222
+ isAuthenticated,
223
+ isLoading,
224
+ accessToken,
225
+ login,
226
+ loginPopup,
227
+ handleCallback,
228
+ logout,
229
+ error,
230
+ }), [
231
+ sdk,
232
+ config,
233
+ user,
234
+ isAuthenticated,
235
+ isLoading,
236
+ accessToken,
237
+ login,
238
+ loginPopup,
239
+ handleCallback,
240
+ logout,
241
+ error,
242
+ ]);
243
+ return createElement(IamContext.Provider, { value }, children);
244
+ }
245
+ // ---------------------------------------------------------------------------
246
+ // useIam
247
+ // ---------------------------------------------------------------------------
248
+ /**
249
+ * Access Hanzo IAM auth state and methods.
250
+ * Must be used within an `<IamProvider>`.
251
+ */
252
+ export function useIam() {
253
+ const ctx = useContext(IamContext);
254
+ if (!ctx) {
255
+ throw new Error("useIam() must be used within an <IamProvider>");
256
+ }
257
+ return ctx;
258
+ }
259
+ // ---------------------------------------------------------------------------
260
+ // useOrganizations
261
+ // ---------------------------------------------------------------------------
262
+ /**
263
+ * Manage organization and project switching.
264
+ *
265
+ * Fetches the user's organizations from IAM and provides
266
+ * `switchOrg` / `switchProject` to change the active tenant.
267
+ * Selection is persisted to localStorage.
268
+ */
269
+ export function useOrganizations() {
270
+ const { config, isAuthenticated, accessToken } = useIam();
271
+ const [organizations, setOrganizations] = useState([]);
272
+ const [isLoading, setIsLoading] = useState(false);
273
+ const [currentOrgId, setCurrentOrgId] = useState(() => {
274
+ try {
275
+ return localStorage.getItem(STORAGE_ORG_KEY);
276
+ }
277
+ catch {
278
+ return null;
279
+ }
280
+ });
281
+ const [currentProjectId, setCurrentProjectId] = useState(() => {
282
+ try {
283
+ return localStorage.getItem(STORAGE_PROJECT_KEY);
284
+ }
285
+ catch {
286
+ return null;
287
+ }
288
+ });
289
+ // Fetch organizations when authenticated
290
+ useEffect(() => {
291
+ if (!isAuthenticated || !accessToken) {
292
+ setOrganizations([]);
293
+ return;
294
+ }
295
+ let cancelled = false;
296
+ const fetchOrgs = async () => {
297
+ setIsLoading(true);
298
+ // 1. Parse JWT sub claim for primary org (immediate, no API call)
299
+ try {
300
+ const payload = JSON.parse(atob(accessToken.split(".")[1]));
301
+ const sub = payload.sub;
302
+ if (sub?.includes("/")) {
303
+ const primaryOrg = sub.split("/")[0];
304
+ if (!cancelled) {
305
+ const syntheticOrg = {
306
+ owner: "admin",
307
+ name: primaryOrg,
308
+ displayName: primaryOrg,
309
+ };
310
+ setOrganizations([syntheticOrg]);
311
+ if (!currentOrgId) {
312
+ setCurrentOrgId(primaryOrg);
313
+ try {
314
+ localStorage.setItem(STORAGE_ORG_KEY, primaryOrg);
315
+ }
316
+ catch {
317
+ /* ok */
318
+ }
319
+ }
320
+ }
321
+ }
322
+ }
323
+ catch {
324
+ // Invalid token format — skip JWT parsing
325
+ }
326
+ // 2. Try to fetch full org list from API (may fail for non-admin users)
327
+ try {
328
+ const client = new IamClient({
329
+ serverUrl: config.serverUrl,
330
+ clientId: config.clientId,
331
+ });
332
+ const orgs = await client.getOrganizations(accessToken);
333
+ if (!cancelled && orgs.length > 0) {
334
+ setOrganizations(orgs);
335
+ if (!currentOrgId && orgs.length > 0) {
336
+ const firstOrg = orgs[0].name;
337
+ setCurrentOrgId(firstOrg);
338
+ try {
339
+ localStorage.setItem(STORAGE_ORG_KEY, firstOrg);
340
+ }
341
+ catch {
342
+ /* ok */
343
+ }
344
+ }
345
+ }
346
+ }
347
+ catch {
348
+ // API call failed — keep JWT-derived org
349
+ }
350
+ finally {
351
+ if (!cancelled)
352
+ setIsLoading(false);
353
+ }
354
+ };
355
+ fetchOrgs();
356
+ return () => {
357
+ cancelled = true;
358
+ };
359
+ // eslint-disable-next-line react-hooks/exhaustive-deps
360
+ }, [isAuthenticated, accessToken, config.serverUrl, config.clientId]);
361
+ const currentOrg = useMemo(() => organizations.find((o) => o.name === currentOrgId) ?? null, [organizations, currentOrgId]);
362
+ const switchOrg = useCallback((orgId) => {
363
+ setCurrentOrgId(orgId);
364
+ setCurrentProjectId(null);
365
+ try {
366
+ localStorage.setItem(STORAGE_ORG_KEY, orgId);
367
+ localStorage.removeItem(STORAGE_PROJECT_KEY);
368
+ }
369
+ catch {
370
+ /* ok */
371
+ }
372
+ }, []);
373
+ const switchProject = useCallback((projectId) => {
374
+ setCurrentProjectId(projectId);
375
+ try {
376
+ if (projectId) {
377
+ localStorage.setItem(STORAGE_PROJECT_KEY, projectId);
378
+ }
379
+ else {
380
+ localStorage.removeItem(STORAGE_PROJECT_KEY);
381
+ }
382
+ }
383
+ catch {
384
+ /* ok */
385
+ }
386
+ }, []);
387
+ return {
388
+ organizations,
389
+ currentOrg,
390
+ currentOrgId,
391
+ switchOrg,
392
+ currentProjectId,
393
+ switchProject,
394
+ isLoading,
395
+ };
396
+ }
397
+ // ---------------------------------------------------------------------------
398
+ // useIamToken
399
+ // ---------------------------------------------------------------------------
400
+ /**
401
+ * Hook that provides a valid access token with auto-refresh capability.
402
+ * Returns null while loading or if not authenticated.
403
+ */
404
+ export function useIamToken() {
405
+ const { sdk, accessToken, isAuthenticated } = useIam();
406
+ const refresh = useCallback(async () => {
407
+ try {
408
+ return await sdk.getValidAccessToken();
409
+ }
410
+ catch {
411
+ return null;
412
+ }
413
+ }, [sdk]);
414
+ return {
415
+ token: accessToken,
416
+ isValid: isAuthenticated && !!accessToken && !sdk.isTokenExpired(),
417
+ refresh,
418
+ };
419
+ }
420
+ // Re-export context for advanced use
421
+ export { IamContext };
422
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Core types for the Hanzo IAM SDK.
3
+ * Based on Casdoor data models.
4
+ */
5
+ export type IamConfig = {
6
+ /** IAM server base URL (e.g. "https://iam.hanzo.ai"). */
7
+ serverUrl: string;
8
+ /** OAuth2 client ID. */
9
+ clientId: string;
10
+ /** OAuth2 client secret (for confidential clients / server-side). */
11
+ clientSecret?: string;
12
+ /** Organization name (owner context). */
13
+ orgName?: string;
14
+ /** Application name. */
15
+ appName?: string;
16
+ };
17
+ export type OidcDiscovery = {
18
+ issuer: string;
19
+ authorization_endpoint: string;
20
+ token_endpoint: string;
21
+ userinfo_endpoint: string;
22
+ jwks_uri: string;
23
+ scopes_supported?: string[];
24
+ response_types_supported?: string[];
25
+ grant_types_supported?: string[];
26
+ };
27
+ export type TokenResponse = {
28
+ access_token: string;
29
+ token_type: string;
30
+ expires_in?: number;
31
+ refresh_token?: string;
32
+ id_token?: string;
33
+ scope?: string;
34
+ };
35
+ export type IamJwtClaims = {
36
+ /** Subject (user ID in format "org/username"). */
37
+ sub: string;
38
+ /** Issuer URL. */
39
+ iss?: string;
40
+ /** Audience. */
41
+ aud?: string | string[];
42
+ /** Expiry (unix seconds). */
43
+ exp?: number;
44
+ /** Issued at (unix seconds). */
45
+ iat?: number;
46
+ /** User email. */
47
+ email?: string;
48
+ /** Display name. */
49
+ name?: string;
50
+ /** Preferred username. */
51
+ preferred_username?: string;
52
+ /** Avatar URL. */
53
+ picture?: string;
54
+ /** Phone number. */
55
+ phone?: string;
56
+ /** Groups/roles. */
57
+ groups?: string[];
58
+ /** Arbitrary extra claims. */
59
+ [key: string]: unknown;
60
+ };
61
+ export type IamUser = {
62
+ owner: string;
63
+ name: string;
64
+ id?: string;
65
+ displayName?: string;
66
+ email?: string;
67
+ phone?: string;
68
+ avatar?: string;
69
+ type?: string;
70
+ isAdmin?: boolean;
71
+ isGlobalAdmin?: boolean;
72
+ createdTime?: string;
73
+ signupApplication?: string;
74
+ };
75
+ export type IamOrganization = {
76
+ owner: string;
77
+ name: string;
78
+ displayName?: string;
79
+ createdTime?: string;
80
+ websiteUrl?: string;
81
+ logo?: string;
82
+ logoDark?: string;
83
+ favicon?: string;
84
+ isPersonal?: boolean;
85
+ orgBalance?: number;
86
+ userBalance?: number;
87
+ balanceCredit?: number;
88
+ balanceCurrency?: string;
89
+ };
90
+ export type IamSubscription = {
91
+ owner: string;
92
+ name: string;
93
+ displayName?: string;
94
+ createdTime?: string;
95
+ user?: string;
96
+ plan?: string;
97
+ pricing?: string;
98
+ startTime?: string;
99
+ endTime?: string;
100
+ duration?: number;
101
+ state?: "Active" | "Inactive" | "Expired" | "Cancelled" | string;
102
+ description?: string;
103
+ };
104
+ export type IamPlan = {
105
+ owner: string;
106
+ name: string;
107
+ displayName?: string;
108
+ createdTime?: string;
109
+ description?: string;
110
+ pricePerMonth?: number;
111
+ pricePerYear?: number;
112
+ currency?: string;
113
+ options?: string[];
114
+ isEnabled?: boolean;
115
+ role?: string;
116
+ };
117
+ export type IamPricing = {
118
+ owner: string;
119
+ name: string;
120
+ displayName?: string;
121
+ createdTime?: string;
122
+ description?: string;
123
+ plans?: string[];
124
+ isEnabled?: boolean;
125
+ application?: string;
126
+ trialDuration?: number;
127
+ };
128
+ export type IamPayment = {
129
+ owner: string;
130
+ name: string;
131
+ displayName?: string;
132
+ createdTime?: string;
133
+ provider?: string;
134
+ type?: string;
135
+ currency?: string;
136
+ price?: number;
137
+ user?: string;
138
+ state?: string;
139
+ message?: string;
140
+ };
141
+ export type IamOrder = {
142
+ owner: string;
143
+ name: string;
144
+ displayName?: string;
145
+ createdTime?: string;
146
+ user?: string;
147
+ products?: string[];
148
+ price?: number;
149
+ currency?: string;
150
+ state?: string;
151
+ message?: string;
152
+ };
153
+ export type IamAuthResult = {
154
+ ok: true;
155
+ userId: string;
156
+ email?: string;
157
+ name?: string;
158
+ avatar?: string;
159
+ owner: string;
160
+ claims: IamJwtClaims;
161
+ } | {
162
+ ok: false;
163
+ reason: string;
164
+ };
165
+ export type IamApiResponse<T> = {
166
+ status: "ok" | "error";
167
+ msg?: string;
168
+ data?: T;
169
+ data2?: unknown;
170
+ };
171
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Core types for the Hanzo IAM SDK.
3
+ * Based on Casdoor data models.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}