@spidy092/auth-client 3.1.3 → 3.1.5
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/api.cjs +34 -0
- package/dist/api.cjs.map +1 -1
- package/dist/api.js +34 -0
- package/dist/api.js.map +1 -1
- package/dist/index.cjs +194 -31
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +194 -31
- package/dist/index.js.map +1 -1
- package/dist/preferences.cjs +34 -0
- package/dist/preferences.cjs.map +1 -1
- package/dist/preferences.js +34 -0
- package/dist/preferences.js.map +1 -1
- package/dist/react/AuthProvider.cjs +188 -31
- package/dist/react/AuthProvider.cjs.map +1 -1
- package/dist/react/AuthProvider.js +188 -31
- package/dist/react/AuthProvider.js.map +1 -1
- package/dist/react/PreferencesProvider.cjs +34 -0
- package/dist/react/PreferencesProvider.cjs.map +1 -1
- package/dist/react/PreferencesProvider.js +34 -0
- package/dist/react/PreferencesProvider.js.map +1 -1
- package/dist/react/useAuth.cjs.map +1 -1
- package/dist/react/useAuth.js.map +1 -1
- package/dist/react/useSessionMonitor.cjs +61 -1
- package/dist/react/useSessionMonitor.cjs.map +1 -1
- package/dist/react/useSessionMonitor.js +61 -1
- package/dist/react/useSessionMonitor.js.map +1 -1
- package/dist/utils/jwt.cjs.map +1 -1
- package/dist/utils/jwt.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,8 +5,10 @@ import { useEffect as useEffect3, useCallback } from "react";
|
|
|
5
5
|
// token.js
|
|
6
6
|
import { jwtDecode } from "jwt-decode";
|
|
7
7
|
var accessToken = null;
|
|
8
|
+
var idToken = null;
|
|
8
9
|
var listeners = /* @__PURE__ */ new Set();
|
|
9
10
|
var REFRESH_COOKIE = "account_refresh_token";
|
|
11
|
+
var ID_TOKEN_KEY = "auth_id_token";
|
|
10
12
|
var COOKIE_MAX_AGE = 7 * 24 * 60 * 60;
|
|
11
13
|
function secureAttribute() {
|
|
12
14
|
var _a;
|
|
@@ -85,12 +87,14 @@ function getToken() {
|
|
|
85
87
|
function clearToken() {
|
|
86
88
|
if (!accessToken) {
|
|
87
89
|
writeAccessToken(null);
|
|
90
|
+
clearIdToken();
|
|
88
91
|
clearRefreshToken();
|
|
89
92
|
return;
|
|
90
93
|
}
|
|
91
94
|
const previousToken = accessToken;
|
|
92
95
|
accessToken = null;
|
|
93
96
|
writeAccessToken(null);
|
|
97
|
+
clearIdToken();
|
|
94
98
|
clearRefreshToken();
|
|
95
99
|
listeners.forEach((listener) => {
|
|
96
100
|
try {
|
|
@@ -100,6 +104,30 @@ function clearToken() {
|
|
|
100
104
|
}
|
|
101
105
|
});
|
|
102
106
|
}
|
|
107
|
+
function setIdToken(token) {
|
|
108
|
+
idToken = token || null;
|
|
109
|
+
try {
|
|
110
|
+
if (idToken) sessionStorage.setItem(ID_TOKEN_KEY, idToken);
|
|
111
|
+
else sessionStorage.removeItem(ID_TOKEN_KEY);
|
|
112
|
+
} catch {
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function getIdToken() {
|
|
116
|
+
if (idToken) return idToken;
|
|
117
|
+
try {
|
|
118
|
+
idToken = sessionStorage.getItem(ID_TOKEN_KEY) || null;
|
|
119
|
+
} catch {
|
|
120
|
+
idToken = null;
|
|
121
|
+
}
|
|
122
|
+
return idToken;
|
|
123
|
+
}
|
|
124
|
+
function clearIdToken() {
|
|
125
|
+
idToken = null;
|
|
126
|
+
try {
|
|
127
|
+
sessionStorage.removeItem(ID_TOKEN_KEY);
|
|
128
|
+
} catch {
|
|
129
|
+
}
|
|
130
|
+
}
|
|
103
131
|
var REFRESH_TOKEN_KEY = "auth_refresh_token";
|
|
104
132
|
var _persistRefreshToken = false;
|
|
105
133
|
function enableRefreshTokenPersistence(enabled) {
|
|
@@ -344,6 +372,28 @@ function clearLoginLock() {
|
|
|
344
372
|
} catch {
|
|
345
373
|
}
|
|
346
374
|
}
|
|
375
|
+
async function reportClientDiagnostic(safe) {
|
|
376
|
+
if (typeof fetch !== "function" || typeof getToken !== "function") return;
|
|
377
|
+
if (safe.outcome === "SUCCESS" && !safe.event.startsWith("PROFILE_") && !safe.event.startsWith("SESSION_")) return;
|
|
378
|
+
const { authBaseUrl } = getConfig();
|
|
379
|
+
const token = getToken();
|
|
380
|
+
if (!authBaseUrl || !token) return;
|
|
381
|
+
try {
|
|
382
|
+
await fetch(`${authBaseUrl.replace(/\/+$/, "")}/client-telemetry`, {
|
|
383
|
+
method: "POST",
|
|
384
|
+
credentials: "include",
|
|
385
|
+
keepalive: true,
|
|
386
|
+
headers: {
|
|
387
|
+
"Content-Type": "application/json",
|
|
388
|
+
Authorization: `Bearer ${token}`,
|
|
389
|
+
"X-Correlation-ID": safe.correlationId,
|
|
390
|
+
"X-Request-ID": safe.correlationId
|
|
391
|
+
},
|
|
392
|
+
body: JSON.stringify(safe)
|
|
393
|
+
});
|
|
394
|
+
} catch {
|
|
395
|
+
}
|
|
396
|
+
}
|
|
347
397
|
async function emitAuthDiagnostic(event, outcome, reasonCode, details = {}) {
|
|
348
398
|
const context = getDiagnosticContext();
|
|
349
399
|
const safe = {
|
|
@@ -360,6 +410,7 @@ async function emitAuthDiagnostic(event, outcome, reasonCode, details = {}) {
|
|
|
360
410
|
};
|
|
361
411
|
const method = outcome === "FAILURE" ? "error" : outcome === "WARNING" ? "warn" : "info";
|
|
362
412
|
console[method]("[auth-client]", safe);
|
|
413
|
+
void reportClientDiagnostic(safe);
|
|
363
414
|
return safe;
|
|
364
415
|
}
|
|
365
416
|
|
|
@@ -422,6 +473,7 @@ async function logout(options = {}) {
|
|
|
422
473
|
const { clientKey, authBaseUrl, accountUiUrl } = getConfig();
|
|
423
474
|
const scope = options.scope === "client" ? "client" : "sso";
|
|
424
475
|
const token = getToken();
|
|
476
|
+
const idToken2 = getIdToken();
|
|
425
477
|
const refreshToken2 = getRefreshToken();
|
|
426
478
|
console.log("\u{1F6AA} Smart Logout initiated", {
|
|
427
479
|
mode: isRouterMode() ? "ROUTER" : "CLIENT",
|
|
@@ -430,6 +482,7 @@ async function logout(options = {}) {
|
|
|
430
482
|
});
|
|
431
483
|
emitAuthDiagnostic("LOGOUT_INITIATED", "PENDING", "NONE", { clientKey });
|
|
432
484
|
clearToken();
|
|
485
|
+
clearIdToken();
|
|
433
486
|
clearRefreshToken();
|
|
434
487
|
sessionStorage.removeItem("originalApp");
|
|
435
488
|
sessionStorage.removeItem("returnUrl");
|
|
@@ -442,7 +495,7 @@ async function logout(options = {}) {
|
|
|
442
495
|
"Authorization": token ? `Bearer ${token}` : "",
|
|
443
496
|
"Content-Type": "application/json"
|
|
444
497
|
},
|
|
445
|
-
body: JSON.stringify({ refreshToken: refreshToken2, scope })
|
|
498
|
+
body: JSON.stringify({ refreshToken: refreshToken2, idToken: idToken2, scope })
|
|
446
499
|
});
|
|
447
500
|
if (!response.ok) {
|
|
448
501
|
throw new Error(`Logout failed: ${response.status}`);
|
|
@@ -476,9 +529,11 @@ async function logout(options = {}) {
|
|
|
476
529
|
function handleCallback() {
|
|
477
530
|
const params = new URLSearchParams(window.location.search);
|
|
478
531
|
const accessToken2 = params.get("access_token");
|
|
532
|
+
const idToken2 = params.get("id_token");
|
|
479
533
|
const error = params.get("error");
|
|
480
534
|
console.log("\u{1F504} Callback handling:", {
|
|
481
535
|
hasAccessToken: !!accessToken2,
|
|
536
|
+
hasIdToken: !!idToken2,
|
|
482
537
|
error
|
|
483
538
|
});
|
|
484
539
|
if (callbackProcessed) {
|
|
@@ -506,6 +561,7 @@ function handleCallback() {
|
|
|
506
561
|
}
|
|
507
562
|
if (accessToken2) {
|
|
508
563
|
setToken(accessToken2);
|
|
564
|
+
if (idToken2) setIdToken(idToken2);
|
|
509
565
|
const refreshTokenInUrl = params.get("refresh_token");
|
|
510
566
|
if (refreshTokenInUrl) {
|
|
511
567
|
emitAuthDiagnostic("CALLBACK_REFRESH_TOKEN_IGNORED", "WARNING", "REFRESH_TOKEN_IN_URL", {
|
|
@@ -514,6 +570,7 @@ function handleCallback() {
|
|
|
514
570
|
}
|
|
515
571
|
const url = new URL(window.location);
|
|
516
572
|
url.searchParams.delete("access_token");
|
|
573
|
+
url.searchParams.delete("id_token");
|
|
517
574
|
url.searchParams.delete("refresh_token");
|
|
518
575
|
url.searchParams.delete("state");
|
|
519
576
|
url.searchParams.delete("error");
|
|
@@ -1218,6 +1275,9 @@ var auth = {
|
|
|
1218
1275
|
getToken,
|
|
1219
1276
|
setToken,
|
|
1220
1277
|
clearToken,
|
|
1278
|
+
setIdToken,
|
|
1279
|
+
getIdToken,
|
|
1280
|
+
clearIdToken,
|
|
1221
1281
|
setRefreshToken,
|
|
1222
1282
|
// ✅ Refresh token for HTTP dev
|
|
1223
1283
|
getRefreshToken,
|