@spidy092/auth-client 3.1.4 → 3.1.6
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 +11 -0
- package/dist/api.cjs.map +1 -1
- package/dist/api.js +11 -0
- package/dist/api.js.map +1 -1
- package/dist/index.cjs +47 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +47 -4
- package/dist/index.js.map +1 -1
- package/dist/preferences.cjs +11 -0
- package/dist/preferences.cjs.map +1 -1
- package/dist/preferences.js +11 -0
- package/dist/preferences.js.map +1 -1
- package/dist/react/AuthProvider.cjs +32 -4
- package/dist/react/AuthProvider.cjs.map +1 -1
- package/dist/react/AuthProvider.js +32 -4
- package/dist/react/AuthProvider.js.map +1 -1
- package/dist/react/PreferencesProvider.cjs +11 -0
- package/dist/react/PreferencesProvider.cjs.map +1 -1
- package/dist/react/PreferencesProvider.js +11 -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 +38 -1
- package/dist/react/useSessionMonitor.cjs.map +1 -1
- package/dist/react/useSessionMonitor.js +38 -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
package/dist/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
// token.js
|
|
2
2
|
import { jwtDecode } from "jwt-decode";
|
|
3
3
|
var accessToken = null;
|
|
4
|
+
var idToken = null;
|
|
4
5
|
var listeners = /* @__PURE__ */ new Set();
|
|
5
6
|
var REFRESH_COOKIE = "account_refresh_token";
|
|
7
|
+
var ID_TOKEN_KEY = "auth_id_token";
|
|
6
8
|
var COOKIE_MAX_AGE = 7 * 24 * 60 * 60;
|
|
7
9
|
function secureAttribute() {
|
|
8
10
|
var _a;
|
|
@@ -81,12 +83,14 @@ function getToken() {
|
|
|
81
83
|
function clearToken() {
|
|
82
84
|
if (!accessToken) {
|
|
83
85
|
writeAccessToken(null);
|
|
86
|
+
clearIdToken();
|
|
84
87
|
clearRefreshToken();
|
|
85
88
|
return;
|
|
86
89
|
}
|
|
87
90
|
const previousToken = accessToken;
|
|
88
91
|
accessToken = null;
|
|
89
92
|
writeAccessToken(null);
|
|
93
|
+
clearIdToken();
|
|
90
94
|
clearRefreshToken();
|
|
91
95
|
listeners.forEach((listener) => {
|
|
92
96
|
try {
|
|
@@ -96,6 +100,30 @@ function clearToken() {
|
|
|
96
100
|
}
|
|
97
101
|
});
|
|
98
102
|
}
|
|
103
|
+
function setIdToken(token) {
|
|
104
|
+
idToken = token || null;
|
|
105
|
+
try {
|
|
106
|
+
if (idToken) sessionStorage.setItem(ID_TOKEN_KEY, idToken);
|
|
107
|
+
else sessionStorage.removeItem(ID_TOKEN_KEY);
|
|
108
|
+
} catch {
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function getIdToken() {
|
|
112
|
+
if (idToken) return idToken;
|
|
113
|
+
try {
|
|
114
|
+
idToken = sessionStorage.getItem(ID_TOKEN_KEY) || null;
|
|
115
|
+
} catch {
|
|
116
|
+
idToken = null;
|
|
117
|
+
}
|
|
118
|
+
return idToken;
|
|
119
|
+
}
|
|
120
|
+
function clearIdToken() {
|
|
121
|
+
idToken = null;
|
|
122
|
+
try {
|
|
123
|
+
sessionStorage.removeItem(ID_TOKEN_KEY);
|
|
124
|
+
} catch {
|
|
125
|
+
}
|
|
126
|
+
}
|
|
99
127
|
var REFRESH_TOKEN_KEY = "auth_refresh_token";
|
|
100
128
|
var _persistRefreshToken = false;
|
|
101
129
|
function enableRefreshTokenPersistence(enabled) {
|
|
@@ -441,6 +469,7 @@ async function logout(options = {}) {
|
|
|
441
469
|
const { clientKey, authBaseUrl, accountUiUrl } = getConfig();
|
|
442
470
|
const scope = options.scope === "client" ? "client" : "sso";
|
|
443
471
|
const token = getToken();
|
|
472
|
+
const idToken2 = getIdToken();
|
|
444
473
|
const refreshToken2 = getRefreshToken();
|
|
445
474
|
console.log("\u{1F6AA} Smart Logout initiated", {
|
|
446
475
|
mode: isRouterMode() ? "ROUTER" : "CLIENT",
|
|
@@ -449,6 +478,7 @@ async function logout(options = {}) {
|
|
|
449
478
|
});
|
|
450
479
|
emitAuthDiagnostic("LOGOUT_INITIATED", "PENDING", "NONE", { clientKey });
|
|
451
480
|
clearToken();
|
|
481
|
+
clearIdToken();
|
|
452
482
|
clearRefreshToken();
|
|
453
483
|
sessionStorage.removeItem("originalApp");
|
|
454
484
|
sessionStorage.removeItem("returnUrl");
|
|
@@ -461,7 +491,7 @@ async function logout(options = {}) {
|
|
|
461
491
|
"Authorization": token ? `Bearer ${token}` : "",
|
|
462
492
|
"Content-Type": "application/json"
|
|
463
493
|
},
|
|
464
|
-
body: JSON.stringify({ refreshToken: refreshToken2, scope })
|
|
494
|
+
body: JSON.stringify({ refreshToken: refreshToken2, idToken: idToken2, scope })
|
|
465
495
|
});
|
|
466
496
|
if (!response.ok) {
|
|
467
497
|
throw new Error(`Logout failed: ${response.status}`);
|
|
@@ -495,9 +525,11 @@ async function logout(options = {}) {
|
|
|
495
525
|
function handleCallback() {
|
|
496
526
|
const params = new URLSearchParams(window.location.search);
|
|
497
527
|
const accessToken2 = params.get("access_token");
|
|
528
|
+
const idToken2 = params.get("id_token");
|
|
498
529
|
const error = params.get("error");
|
|
499
530
|
console.log("\u{1F504} Callback handling:", {
|
|
500
531
|
hasAccessToken: !!accessToken2,
|
|
532
|
+
hasIdToken: !!idToken2,
|
|
501
533
|
error
|
|
502
534
|
});
|
|
503
535
|
if (callbackProcessed) {
|
|
@@ -525,6 +557,7 @@ function handleCallback() {
|
|
|
525
557
|
}
|
|
526
558
|
if (accessToken2) {
|
|
527
559
|
setToken(accessToken2);
|
|
560
|
+
if (idToken2) setIdToken(idToken2);
|
|
528
561
|
const refreshTokenInUrl = params.get("refresh_token");
|
|
529
562
|
if (refreshTokenInUrl) {
|
|
530
563
|
emitAuthDiagnostic("CALLBACK_REFRESH_TOKEN_IGNORED", "WARNING", "REFRESH_TOKEN_IN_URL", {
|
|
@@ -533,6 +566,7 @@ function handleCallback() {
|
|
|
533
566
|
}
|
|
534
567
|
const url = new URL(window.location);
|
|
535
568
|
url.searchParams.delete("access_token");
|
|
569
|
+
url.searchParams.delete("id_token");
|
|
536
570
|
url.searchParams.delete("refresh_token");
|
|
537
571
|
url.searchParams.delete("state");
|
|
538
572
|
url.searchParams.delete("error");
|
|
@@ -1217,6 +1251,7 @@ function AuthProvider({ children, onSessionExpired, manageSessionSecurity = true
|
|
|
1217
1251
|
const onSessionExpiredRef = useRef(onSessionExpired);
|
|
1218
1252
|
const recoveryInFlightRef = useRef(null);
|
|
1219
1253
|
const profileRecoveryTokensRef = useRef(/* @__PURE__ */ new Set());
|
|
1254
|
+
const profileLoadedRef = useRef(false);
|
|
1220
1255
|
useEffect(() => {
|
|
1221
1256
|
onSessionExpiredRef.current = onSessionExpired;
|
|
1222
1257
|
}, [onSessionExpired]);
|
|
@@ -1226,8 +1261,9 @@ function AuthProvider({ children, onSessionExpired, manageSessionSecurity = true
|
|
|
1226
1261
|
setTokenState(nextToken);
|
|
1227
1262
|
if (nextToken) {
|
|
1228
1263
|
setSessionValid(true);
|
|
1229
|
-
setLoading(true);
|
|
1264
|
+
if (!profileLoadedRef.current) setLoading(true);
|
|
1230
1265
|
} else {
|
|
1266
|
+
profileLoadedRef.current = false;
|
|
1231
1267
|
setSessionValid(false);
|
|
1232
1268
|
setUser(null);
|
|
1233
1269
|
setLoading(false);
|
|
@@ -1239,6 +1275,7 @@ function AuthProvider({ children, onSessionExpired, manageSessionSecurity = true
|
|
|
1239
1275
|
clearToken();
|
|
1240
1276
|
setTokenState(null);
|
|
1241
1277
|
setUser(null);
|
|
1278
|
+
profileLoadedRef.current = false;
|
|
1242
1279
|
setSessionValid(false);
|
|
1243
1280
|
setLoading(false);
|
|
1244
1281
|
};
|
|
@@ -1254,7 +1291,7 @@ function AuthProvider({ children, onSessionExpired, manageSessionSecurity = true
|
|
|
1254
1291
|
if (recoveredToken) {
|
|
1255
1292
|
setTokenState(recoveredToken);
|
|
1256
1293
|
setSessionValid(true);
|
|
1257
|
-
setLoading(true);
|
|
1294
|
+
if (!profileLoadedRef.current) setLoading(true);
|
|
1258
1295
|
return true;
|
|
1259
1296
|
}
|
|
1260
1297
|
} catch (error) {
|
|
@@ -1331,6 +1368,7 @@ function AuthProvider({ children, onSessionExpired, manageSessionSecurity = true
|
|
|
1331
1368
|
const userData = (responseBody == null ? void 0 : responseBody.data) ?? responseBody;
|
|
1332
1369
|
console.log("\u2705 Profile fetched successfully:", userData.email);
|
|
1333
1370
|
setUser(userData);
|
|
1371
|
+
profileLoadedRef.current = true;
|
|
1334
1372
|
setSessionValid(true);
|
|
1335
1373
|
setLoading(false);
|
|
1336
1374
|
} catch (error) {
|
|
@@ -1365,6 +1403,7 @@ function AuthProvider({ children, onSessionExpired, manageSessionSecurity = true
|
|
|
1365
1403
|
if (cancelled) return;
|
|
1366
1404
|
const userData = (responseBody == null ? void 0 : responseBody.data) ?? responseBody;
|
|
1367
1405
|
setUser(userData);
|
|
1406
|
+
profileLoadedRef.current = true;
|
|
1368
1407
|
setSessionValid(true);
|
|
1369
1408
|
setLoading(false);
|
|
1370
1409
|
return;
|
|
@@ -1411,7 +1450,7 @@ function AuthProvider({ children, onSessionExpired, manageSessionSecurity = true
|
|
|
1411
1450
|
setToken(newToken);
|
|
1412
1451
|
setTokenState(newToken);
|
|
1413
1452
|
setSessionValid(true);
|
|
1414
|
-
if (newToken) setLoading(true);
|
|
1453
|
+
if (newToken && !profileLoadedRef.current) setLoading(true);
|
|
1415
1454
|
},
|
|
1416
1455
|
clearToken: () => {
|
|
1417
1456
|
stopSessionSecurity();
|
|
@@ -1419,6 +1458,7 @@ function AuthProvider({ children, onSessionExpired, manageSessionSecurity = true
|
|
|
1419
1458
|
clearToken();
|
|
1420
1459
|
setTokenState(null);
|
|
1421
1460
|
setUser(null);
|
|
1461
|
+
profileLoadedRef.current = false;
|
|
1422
1462
|
}
|
|
1423
1463
|
};
|
|
1424
1464
|
return /* @__PURE__ */ React.createElement(AuthContext.Provider, { value }, children);
|
|
@@ -1596,6 +1636,9 @@ var auth = {
|
|
|
1596
1636
|
getToken,
|
|
1597
1637
|
setToken,
|
|
1598
1638
|
clearToken,
|
|
1639
|
+
setIdToken,
|
|
1640
|
+
getIdToken,
|
|
1641
|
+
clearIdToken,
|
|
1599
1642
|
setRefreshToken,
|
|
1600
1643
|
// ✅ Refresh token for HTTP dev
|
|
1601
1644
|
getRefreshToken,
|