oidc-spa 6.5.2 → 6.6.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/mock/oidc.js +6 -5
- package/mock/oidc.js.map +1 -1
- package/oidc/AuthResponse.d.ts +6 -0
- package/oidc/AuthResponse.js +59 -0
- package/oidc/AuthResponse.js.map +1 -0
- package/oidc/Oidc.d.ts +19 -8
- package/oidc/createOidc.d.ts +4 -4
- package/oidc/createOidc.js +359 -295
- package/oidc/createOidc.js.map +1 -1
- package/oidc/evtIsUserActive.d.ts +15 -0
- package/oidc/{isUserActive.js → evtIsUserActive.js} +29 -12
- package/oidc/evtIsUserActive.js.map +1 -0
- package/oidc/handleOidcCallback.d.ts +8 -1
- package/oidc/handleOidcCallback.js +68 -13
- package/oidc/handleOidcCallback.js.map +1 -1
- package/oidc/loginOrGoToAuthServer.d.ts +5 -4
- package/oidc/loginOrGoToAuthServer.js +190 -227
- package/oidc/loginOrGoToAuthServer.js.map +1 -1
- package/oidc/loginPropagationToOtherTabs.d.ts +17 -0
- package/oidc/loginPropagationToOtherTabs.js +41 -0
- package/oidc/loginPropagationToOtherTabs.js.map +1 -0
- package/oidc/loginSilent.d.ts +1 -5
- package/oidc/loginSilent.js +3 -51
- package/oidc/loginSilent.js.map +1 -1
- package/oidc/logoutPropagationToOtherTabs.js +1 -1
- package/oidc/logoutPropagationToOtherTabs.js.map +1 -1
- package/oidc/oidcClientTsUserToTokens.d.ts +1 -1
- package/oidc/oidcClientTsUserToTokens.js +45 -23
- package/oidc/oidcClientTsUserToTokens.js.map +1 -1
- package/oidc/ongoingLoginOrRefreshProcesses.d.ts +16 -0
- package/oidc/ongoingLoginOrRefreshProcesses.js +102 -0
- package/oidc/ongoingLoginOrRefreshProcesses.js.map +1 -0
- package/oidc/persistedAuthState.d.ts +16 -3
- package/oidc/persistedAuthState.js +35 -4
- package/oidc/persistedAuthState.js.map +1 -1
- package/package.json +36 -21
- package/react/react.js +8 -14
- package/react/react.js.map +1 -1
- package/src/mock/oidc.ts +14 -3
- package/src/oidc/AuthResponse.ts +26 -0
- package/src/oidc/Oidc.ts +19 -4
- package/src/oidc/createOidc.ts +233 -206
- package/src/oidc/{isUserActive.ts → evtIsUserActive.ts} +36 -10
- package/src/oidc/handleOidcCallback.ts +73 -12
- package/src/oidc/loginOrGoToAuthServer.ts +94 -87
- package/src/oidc/loginPropagationToOtherTabs.ts +63 -0
- package/src/oidc/loginSilent.ts +2 -20
- package/src/oidc/logoutPropagationToOtherTabs.ts +2 -2
- package/src/oidc/oidcClientTsUserToTokens.ts +74 -35
- package/src/oidc/ongoingLoginOrRefreshProcesses.ts +60 -0
- package/src/oidc/persistedAuthState.ts +66 -8
- package/src/react/react.tsx +8 -16
- package/src/tools/{ephemeralSessionStorage.ts → EphemeralSessionStorage.ts} +59 -27
- package/src/tools/Evt.ts +56 -0
- package/src/tools/StatefulEvt.ts +38 -0
- package/src/tools/subscribeToUserInteraction.ts +0 -1
- package/src/tools/workerTimers.ts +10 -12
- package/tools/EphemeralSessionStorage.d.ts +12 -0
- package/tools/{ephemeralSessionStorage.js → EphemeralSessionStorage.js} +29 -16
- package/tools/EphemeralSessionStorage.js.map +1 -0
- package/tools/Evt.d.ts +11 -0
- package/tools/{AwaitableEventEmitter.js → Evt.js} +24 -8
- package/tools/Evt.js.map +1 -0
- package/tools/StatefulEvt.d.ts +12 -0
- package/tools/StatefulEvt.js +24 -0
- package/tools/StatefulEvt.js.map +1 -0
- package/tools/subscribeToUserInteraction.js +2 -3
- package/tools/subscribeToUserInteraction.js.map +1 -1
- package/tools/workerTimers.js +11 -13
- package/tools/workerTimers.js.map +1 -1
- package/oidc/isUserActive.d.ts +0 -13
- package/oidc/isUserActive.js.map +0 -1
- package/src/tools/AwaitableEventEmitter.ts +0 -33
- package/src/tools/StatefulObservable.ts +0 -52
- package/tools/AwaitableEventEmitter.d.ts +0 -5
- package/tools/AwaitableEventEmitter.js.map +0 -1
- package/tools/StatefulObservable.d.ts +0 -12
- package/tools/StatefulObservable.js +0 -33
- package/tools/StatefulObservable.js.map +0 -1
- package/tools/ephemeralSessionStorage.d.ts +0 -3
- package/tools/ephemeralSessionStorage.js.map +0 -1
package/oidc/createOidc.js
CHANGED
|
@@ -102,31 +102,33 @@ var tsafe_1 = require("../vendor/frontend/tsafe");
|
|
|
102
102
|
var workerTimers_1 = require("../tools/workerTimers");
|
|
103
103
|
var Deferred_1 = require("../tools/Deferred");
|
|
104
104
|
var decodeJwt_1 = require("../tools/decodeJwt");
|
|
105
|
-
var
|
|
105
|
+
var evtIsUserActive_1 = require("./evtIsUserActive");
|
|
106
106
|
var startCountdown_1 = require("../tools/startCountdown");
|
|
107
107
|
var toHumanReadableDuration_1 = require("../tools/toHumanReadableDuration");
|
|
108
108
|
var toFullyQualifiedUrl_1 = require("../tools/toFullyQualifiedUrl");
|
|
109
109
|
var OidcInitializationError_1 = require("./OidcInitializationError");
|
|
110
110
|
var StateData_1 = require("./StateData");
|
|
111
111
|
var logoutPropagationToOtherTabs_1 = require("./logoutPropagationToOtherTabs");
|
|
112
|
+
var loginPropagationToOtherTabs_1 = require("./loginPropagationToOtherTabs");
|
|
112
113
|
var configId_1 = require("./configId");
|
|
113
114
|
var oidcClientTsUserToTokens_1 = require("./oidcClientTsUserToTokens");
|
|
114
115
|
var loginSilent_1 = require("./loginSilent");
|
|
116
|
+
var AuthResponse_1 = require("./AuthResponse");
|
|
115
117
|
var handleOidcCallback_1 = require("./handleOidcCallback");
|
|
116
118
|
var persistedAuthState_1 = require("./persistedAuthState");
|
|
117
|
-
var
|
|
119
|
+
var Evt_1 = require("../tools/Evt");
|
|
118
120
|
var haveSharedParentDomain_1 = require("../tools/haveSharedParentDomain");
|
|
119
121
|
var loginOrGoToAuthServer_1 = require("./loginOrGoToAuthServer");
|
|
120
|
-
var
|
|
121
|
-
|
|
122
|
-
var VERSION = "6.5.2";
|
|
122
|
+
var EphemeralSessionStorage_1 = require("../tools/EphemeralSessionStorage");
|
|
123
|
+
var ongoingLoginOrRefreshProcesses_1 = require("./ongoingLoginOrRefreshProcesses");
|
|
123
124
|
(0, handleOidcCallback_1.handleOidcCallback)();
|
|
125
|
+
// NOTE: Replaced at build time
|
|
126
|
+
var VERSION = "6.6.0";
|
|
124
127
|
var GLOBAL_CONTEXT_KEY = "__oidc-spa.createOidc.globalContext";
|
|
125
128
|
(_a = window[GLOBAL_CONTEXT_KEY]) !== null && _a !== void 0 ? _a : (window[GLOBAL_CONTEXT_KEY] = {
|
|
126
129
|
prOidcByConfigId: new Map(),
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
hasLogoutBeenCalled: false
|
|
130
|
+
hasLogoutBeenCalled: false,
|
|
131
|
+
evtRequestToPersistTokens: (0, Evt_1.createEvt)()
|
|
130
132
|
});
|
|
131
133
|
var globalContext = window[GLOBAL_CONTEXT_KEY];
|
|
132
134
|
var MIN_RENEW_BEFORE_EXPIRE_MS = 2000;
|
|
@@ -215,10 +217,10 @@ function createOidc(params) {
|
|
|
215
217
|
}
|
|
216
218
|
function createOidc_nonMemoized(params, preProcessedParams) {
|
|
217
219
|
return __awaiter(this, void 0, void 0, function () {
|
|
218
|
-
var transformUrlBeforeRedirect, extraQueryParamsOrGetter, extraTokenParamsOrGetter, homeUrl_params, decodedIdTokenSchema, __unsafe_ssoSessionIdleSeconds, _a, autoLogoutParams, _b, autoLogin, postLoginRedirectUrl_default, __unsafe_clientSecret, _c, __unsafe_useIdTokenAsAccessToken, issuerUri, clientId, scopes, configId, log, _d, getExtraQueryParams, getExtraTokenParams, homeAndCallbackUrl, isHandled, stateQueryParamValue_instance, areThirdPartyCookiesAllowed, url1, url2,
|
|
220
|
+
var transformUrlBeforeRedirect, extraQueryParamsOrGetter, extraTokenParamsOrGetter, homeUrl_params, decodedIdTokenSchema, __unsafe_ssoSessionIdleSeconds, _a, autoLogoutParams, _b, autoLogin, postLoginRedirectUrl_default, __unsafe_clientSecret, _c, __unsafe_useIdTokenAsAccessToken, issuerUri, clientId, scopes, configId, log, _d, getExtraQueryParams, getExtraTokenParams, homeAndCallbackUrl, isHandled, stateQueryParamValue_instance, areThirdPartyCookiesAllowed, url1, url2, isUserStoreInMemoryOnly, oidcClientTsUserManager, evtIsUserLoggedIn, loginOrGoToAuthServer, BROWSER_SESSION_NOT_FIRST_INIT_KEY, completeLoginOrRefreshProcess, resultOfLoginProcess, oidc_common, oidc_notLoggedIn, prOtherTabLogin, currentTokens, autoLogoutCountdownTickCallbacks, onTokenChanges, oidc_loggedIn, sessionId, prOtherTabLogout, startCountdown_2, stopCountdown_1, evtIsUserActive;
|
|
219
221
|
var _this = this;
|
|
220
|
-
return __generator(this, function (
|
|
221
|
-
switch (
|
|
222
|
+
return __generator(this, function (_e) {
|
|
223
|
+
switch (_e.label) {
|
|
222
224
|
case 0:
|
|
223
225
|
transformUrlBeforeRedirect = params.transformUrlBeforeRedirect, extraQueryParamsOrGetter = params.extraQueryParams, extraTokenParamsOrGetter = params.extraTokenParams, homeUrl_params = params.homeUrl, decodedIdTokenSchema = params.decodedIdTokenSchema, __unsafe_ssoSessionIdleSeconds = params.__unsafe_ssoSessionIdleSeconds, _a = params.autoLogoutParams, autoLogoutParams = _a === void 0 ? { redirectTo: "current page" } : _a, _b = params.autoLogin, autoLogin = _b === void 0 ? false : _b, postLoginRedirectUrl_default = params.postLoginRedirectUrl, __unsafe_clientSecret = params.__unsafe_clientSecret, _c = params.__unsafe_useIdTokenAsAccessToken, __unsafe_useIdTokenAsAccessToken = _c === void 0 ? false : _c;
|
|
224
226
|
issuerUri = preProcessedParams.issuerUri, clientId = preProcessedParams.clientId, scopes = preProcessedParams.scopes, configId = preProcessedParams.configId, log = preProcessedParams.log;
|
|
@@ -247,8 +249,8 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
247
249
|
if (!isHandled) return [3 /*break*/, 2];
|
|
248
250
|
return [4 /*yield*/, new Promise(function () { })];
|
|
249
251
|
case 1:
|
|
250
|
-
|
|
251
|
-
|
|
252
|
+
_e.sent();
|
|
253
|
+
_e.label = 2;
|
|
252
254
|
case 2:
|
|
253
255
|
stateQueryParamValue_instance = (0, StateData_1.generateStateQueryParamValue)();
|
|
254
256
|
{
|
|
@@ -269,7 +271,6 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
269
271
|
].join(" "));
|
|
270
272
|
}
|
|
271
273
|
}
|
|
272
|
-
isUserStorePersistent = !areThirdPartyCookiesAllowed;
|
|
273
274
|
oidcClientTsUserManager = new oidc_client_ts_and_jwt_decode_1.UserManager({
|
|
274
275
|
stateQueryParamValue: stateQueryParamValue_instance,
|
|
275
276
|
authority: issuerUri,
|
|
@@ -281,88 +282,71 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
281
282
|
scope: Array.from(new Set(__spreadArray(["openid"], __read(scopes), false))).join(" "),
|
|
282
283
|
automaticSilentRenew: false,
|
|
283
284
|
userStore: new oidc_client_ts_and_jwt_decode_1.WebStorageStateStore({
|
|
284
|
-
store:
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
}
|
|
285
|
+
store: (function () {
|
|
286
|
+
if (areThirdPartyCookiesAllowed) {
|
|
287
|
+
isUserStoreInMemoryOnly = true;
|
|
288
|
+
return new oidc_client_ts_and_jwt_decode_1.InMemoryWebStorage();
|
|
289
|
+
}
|
|
290
|
+
isUserStoreInMemoryOnly = false;
|
|
291
|
+
var storage = (0, EphemeralSessionStorage_1.createEphemeralSessionStorage)({
|
|
292
|
+
sessionStorageTtlMs: 3 * 60000
|
|
293
|
+
});
|
|
294
|
+
var evtRequestToPersistTokens = globalContext.evtRequestToPersistTokens;
|
|
295
|
+
evtRequestToPersistTokens.subscribe(function (_a) {
|
|
296
|
+
var configIdOfInstancePostingTheRequest = _a.configIdOfInstancePostingTheRequest;
|
|
297
|
+
if (configIdOfInstancePostingTheRequest === configId) {
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
storage.persistCurrentStateAndSubsequentChanges();
|
|
301
|
+
});
|
|
302
|
+
return storage;
|
|
303
|
+
})()
|
|
289
304
|
}),
|
|
290
305
|
stateStore: new oidc_client_ts_and_jwt_decode_1.WebStorageStateStore({ store: localStorage, prefix: StateData_1.STATE_STORE_KEY_PREFIX }),
|
|
291
306
|
client_secret: __unsafe_clientSecret
|
|
292
307
|
});
|
|
293
|
-
|
|
308
|
+
evtIsUserLoggedIn = (0, Evt_1.createEvt)();
|
|
309
|
+
loginOrGoToAuthServer = (0, loginOrGoToAuthServer_1.createLoginOrGoToAuthServer)({
|
|
294
310
|
configId: configId,
|
|
295
311
|
oidcClientTsUserManager: oidcClientTsUserManager,
|
|
296
312
|
getExtraQueryParams: getExtraQueryParams,
|
|
297
313
|
transformUrlBeforeRedirect: transformUrlBeforeRedirect,
|
|
298
314
|
homeAndCallbackUrl: homeAndCallbackUrl,
|
|
315
|
+
evtIsUserLoggedIn: evtIsUserLoggedIn,
|
|
299
316
|
log: log
|
|
300
|
-
})
|
|
317
|
+
}).loginOrGoToAuthServer;
|
|
301
318
|
BROWSER_SESSION_NOT_FIRST_INIT_KEY = "oidc-spa.browser-session-not-first-init:".concat(configId);
|
|
319
|
+
return [4 /*yield*/, (0, ongoingLoginOrRefreshProcesses_1.startLoginOrRefreshProcess)()];
|
|
320
|
+
case 3:
|
|
321
|
+
completeLoginOrRefreshProcess = (_e.sent()).completeLoginOrRefreshProcess;
|
|
302
322
|
return [4 /*yield*/, (function () { return __awaiter(_this, void 0, void 0, function () {
|
|
303
|
-
var authResponse, stateData,
|
|
323
|
+
var authResponseAndStateData, authResponse, stateData, _a, authResponseUrl, oidcClientTsUser, error_1, authResponse_error, authResponseUrl, _b, oidcClientTsUser, _c, _d, persistedAuthState, result_loginSilent, authResponse, authResponse_error, oidcClientTsUser, error_2;
|
|
304
324
|
return __generator(this, function (_e) {
|
|
305
325
|
switch (_e.label) {
|
|
306
326
|
case 0:
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
return undefined;
|
|
311
|
-
}
|
|
312
|
-
var authResponse;
|
|
313
|
-
try {
|
|
314
|
-
authResponse = JSON.parse(value);
|
|
315
|
-
(0, tsafe_1.assert)((0, tsafe_1.typeGuard)(authResponse, authResponse instanceof Object &&
|
|
316
|
-
Object.values(authResponse).every(function (value) { return typeof value === "string"; })), "Valid json but not expected shape");
|
|
317
|
-
}
|
|
318
|
-
catch (error) {
|
|
319
|
-
console.error("Failed to parse auth response from callback URL ".concat(String(error)));
|
|
320
|
-
return undefined;
|
|
321
|
-
}
|
|
322
|
-
return authResponse;
|
|
323
|
-
})();
|
|
324
|
-
if (authResponse === undefined) {
|
|
325
|
-
return [3 /*break*/, 15];
|
|
327
|
+
authResponseAndStateData = (0, handleOidcCallback_1.retrieveRedirectAuthResponseAndStateData)({ configId: configId });
|
|
328
|
+
if (authResponseAndStateData === undefined) {
|
|
329
|
+
return [3 /*break*/, 11];
|
|
326
330
|
}
|
|
327
|
-
|
|
328
|
-
(0, tsafe_1.assert)(stateData !== undefined);
|
|
329
|
-
(0, tsafe_1.assert)(stateData.context === "redirect");
|
|
330
|
-
evtAuthResponseHandled_1 = globalContext.evtAuthResponseHandled;
|
|
331
|
-
if (!(stateData.configId !== configId)) return [3 /*break*/, 4];
|
|
332
|
-
prHandled = evtAuthResponseHandled_1.waitFor();
|
|
333
|
-
return [4 /*yield*/, Promise.resolve()];
|
|
334
|
-
case 1:
|
|
335
|
-
_e.sent();
|
|
336
|
-
if (!(sessionStorage.getItem(handleOidcCallback_1.AUTH_RESPONSE_KEY) === null)) return [3 /*break*/, 3];
|
|
337
|
-
return [4 /*yield*/, prHandled];
|
|
338
|
-
case 2:
|
|
339
|
-
_e.sent();
|
|
340
|
-
_e.label = 3;
|
|
341
|
-
case 3: return [3 /*break*/, 15];
|
|
342
|
-
case 4:
|
|
343
|
-
sessionStorage.removeItem(handleOidcCallback_1.AUTH_RESPONSE_KEY);
|
|
331
|
+
authResponse = authResponseAndStateData.authResponse, stateData = authResponseAndStateData.stateData;
|
|
344
332
|
_a = stateData.action;
|
|
345
333
|
switch (_a) {
|
|
346
|
-
case "login": return [3 /*break*/,
|
|
347
|
-
case "logout": return [3 /*break*/,
|
|
334
|
+
case "login": return [3 /*break*/, 1];
|
|
335
|
+
case "logout": return [3 /*break*/, 6];
|
|
348
336
|
}
|
|
349
|
-
return [3 /*break*/,
|
|
350
|
-
case
|
|
337
|
+
return [3 /*break*/, 11];
|
|
338
|
+
case 1:
|
|
351
339
|
log === null || log === void 0 ? void 0 : log("Handling login redirect auth response", authResponse);
|
|
352
|
-
authResponseUrl = (0,
|
|
340
|
+
authResponseUrl = (0, AuthResponse_1.authResponseToUrl)(authResponse);
|
|
353
341
|
oidcClientTsUser = undefined;
|
|
354
|
-
_e.label =
|
|
355
|
-
case
|
|
356
|
-
_e.trys.push([
|
|
357
|
-
return [4 /*yield*/, oidcClientTsUserManager
|
|
358
|
-
|
|
359
|
-
.finally(function () {
|
|
360
|
-
evtAuthResponseHandled_1.post();
|
|
361
|
-
})];
|
|
362
|
-
case 7:
|
|
342
|
+
_e.label = 2;
|
|
343
|
+
case 2:
|
|
344
|
+
_e.trys.push([2, 4, , 5]);
|
|
345
|
+
return [4 /*yield*/, oidcClientTsUserManager.signinRedirectCallback(authResponseUrl)];
|
|
346
|
+
case 3:
|
|
363
347
|
oidcClientTsUser = _e.sent();
|
|
364
|
-
return [3 /*break*/,
|
|
365
|
-
case
|
|
348
|
+
return [3 /*break*/, 5];
|
|
349
|
+
case 4:
|
|
366
350
|
error_1 = _e.sent();
|
|
367
351
|
(0, tsafe_1.assert)(error_1 instanceof Error);
|
|
368
352
|
if (error_1.message === "Failed to fetch") {
|
|
@@ -372,43 +356,51 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
372
356
|
})];
|
|
373
357
|
}
|
|
374
358
|
{
|
|
375
|
-
|
|
376
|
-
if (
|
|
377
|
-
log === null || log === void 0 ? void 0 : log("The auth server responded with: ".concat(
|
|
378
|
-
return [3 /*break*/,
|
|
359
|
+
authResponse_error = authResponse.error;
|
|
360
|
+
if (authResponse_error !== undefined) {
|
|
361
|
+
log === null || log === void 0 ? void 0 : log("The auth server responded with: ".concat(authResponse_error, ", trying to restore from the http only cookie"));
|
|
362
|
+
return [3 /*break*/, 11];
|
|
379
363
|
}
|
|
380
364
|
}
|
|
381
365
|
return [2 /*return*/, error_1];
|
|
382
|
-
case
|
|
366
|
+
case 5:
|
|
383
367
|
sessionStorage.removeItem(BROWSER_SESSION_NOT_FIRST_INIT_KEY);
|
|
368
|
+
(0, loginPropagationToOtherTabs_1.notifyOtherTabsOfLogin)({ configId: configId });
|
|
384
369
|
return [2 /*return*/, {
|
|
385
370
|
oidcClientTsUser: oidcClientTsUser,
|
|
386
371
|
backFromAuthServer: {
|
|
387
372
|
extraQueryParams: stateData.extraQueryParams,
|
|
388
|
-
result: Object.fromEntries(Object.entries(authResponse)
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
name
|
|
393
|
-
name
|
|
394
|
-
|
|
373
|
+
result: Object.fromEntries(Object.entries(authResponse)
|
|
374
|
+
.map(function (_a) {
|
|
375
|
+
var _b = __read(_a, 2), name = _b[0], value = _b[1];
|
|
376
|
+
if (name === "state" ||
|
|
377
|
+
name === "session_state" ||
|
|
378
|
+
name === "iss" ||
|
|
379
|
+
name === "code") {
|
|
380
|
+
return undefined;
|
|
381
|
+
}
|
|
382
|
+
if (value === undefined) {
|
|
383
|
+
return undefined;
|
|
384
|
+
}
|
|
385
|
+
return [name, value];
|
|
386
|
+
})
|
|
387
|
+
.filter(function (entry) { return entry !== undefined; }))
|
|
395
388
|
}
|
|
396
389
|
}];
|
|
397
|
-
case
|
|
390
|
+
case 6:
|
|
398
391
|
log === null || log === void 0 ? void 0 : log("Handling logout redirect auth response", authResponse);
|
|
399
|
-
authResponseUrl = (0,
|
|
400
|
-
_e.label =
|
|
401
|
-
case
|
|
402
|
-
_e.trys.push([
|
|
392
|
+
authResponseUrl = (0, AuthResponse_1.authResponseToUrl)(authResponse);
|
|
393
|
+
_e.label = 7;
|
|
394
|
+
case 7:
|
|
395
|
+
_e.trys.push([7, 9, , 10]);
|
|
403
396
|
return [4 /*yield*/, oidcClientTsUserManager.signoutRedirectCallback(authResponseUrl)];
|
|
404
|
-
case
|
|
397
|
+
case 8:
|
|
405
398
|
_e.sent();
|
|
406
|
-
return [3 /*break*/,
|
|
407
|
-
case
|
|
399
|
+
return [3 /*break*/, 10];
|
|
400
|
+
case 9:
|
|
408
401
|
_b = _e.sent();
|
|
409
|
-
return [3 /*break*/,
|
|
410
|
-
case
|
|
411
|
-
evtAuthResponseHandled_1.post();
|
|
402
|
+
return [3 /*break*/, 10];
|
|
403
|
+
case 10:
|
|
412
404
|
(0, logoutPropagationToOtherTabs_1.notifyOtherTabsOfLogout)({
|
|
413
405
|
configId: configId,
|
|
414
406
|
redirectUrl: stateData.redirectUrl,
|
|
@@ -416,48 +408,48 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
416
408
|
});
|
|
417
409
|
// NOTE: The user is no longer logged in.
|
|
418
410
|
return [2 /*return*/, undefined];
|
|
419
|
-
case
|
|
420
|
-
if (
|
|
421
|
-
return [3 /*break*/,
|
|
411
|
+
case 11:
|
|
412
|
+
if (isUserStoreInMemoryOnly) {
|
|
413
|
+
return [3 /*break*/, 20];
|
|
422
414
|
}
|
|
423
415
|
oidcClientTsUser = void 0;
|
|
424
|
-
_e.label =
|
|
425
|
-
case
|
|
426
|
-
_e.trys.push([
|
|
416
|
+
_e.label = 12;
|
|
417
|
+
case 12:
|
|
418
|
+
_e.trys.push([12, 14, , 19]);
|
|
427
419
|
return [4 /*yield*/, oidcClientTsUserManager.getUser()];
|
|
428
|
-
case
|
|
420
|
+
case 13:
|
|
429
421
|
oidcClientTsUser = _e.sent();
|
|
430
|
-
return [3 /*break*/,
|
|
431
|
-
case
|
|
422
|
+
return [3 /*break*/, 19];
|
|
423
|
+
case 14:
|
|
432
424
|
_c = _e.sent();
|
|
433
425
|
// NOTE: Not sure if it can throw, but let's be safe.
|
|
434
426
|
oidcClientTsUser = null;
|
|
435
|
-
_e.label =
|
|
436
|
-
case
|
|
437
|
-
_e.trys.push([
|
|
427
|
+
_e.label = 15;
|
|
428
|
+
case 15:
|
|
429
|
+
_e.trys.push([15, 17, , 18]);
|
|
438
430
|
return [4 /*yield*/, oidcClientTsUserManager.removeUser()];
|
|
439
|
-
case
|
|
431
|
+
case 16:
|
|
440
432
|
_e.sent();
|
|
441
|
-
return [3 /*break*/,
|
|
442
|
-
case
|
|
433
|
+
return [3 /*break*/, 18];
|
|
434
|
+
case 17:
|
|
443
435
|
_d = _e.sent();
|
|
444
|
-
return [3 /*break*/,
|
|
445
|
-
case
|
|
446
|
-
case
|
|
436
|
+
return [3 /*break*/, 18];
|
|
437
|
+
case 18: return [3 /*break*/, 19];
|
|
438
|
+
case 19:
|
|
447
439
|
if (oidcClientTsUser === null) {
|
|
448
|
-
return [3 /*break*/,
|
|
440
|
+
return [3 /*break*/, 20];
|
|
449
441
|
}
|
|
450
442
|
log === null || log === void 0 ? void 0 : log("Restored the auth from ephemeral session storage");
|
|
451
443
|
return [2 /*return*/, {
|
|
452
444
|
oidcClientTsUser: oidcClientTsUser,
|
|
453
445
|
backFromAuthServer: undefined
|
|
454
446
|
}];
|
|
455
|
-
case
|
|
447
|
+
case 20:
|
|
456
448
|
log === null || log === void 0 ? void 0 : log("Trying to restore the auth from the http only cookie (silent signin with iframe)");
|
|
457
449
|
persistedAuthState = (0, persistedAuthState_1.getPersistedAuthState)({ configId: configId });
|
|
458
450
|
if (persistedAuthState === "explicitly logged out") {
|
|
459
451
|
log === null || log === void 0 ? void 0 : log("Skipping silent signin with iframe, the user has logged out");
|
|
460
|
-
return [3 /*break*/,
|
|
452
|
+
return [3 /*break*/, 30];
|
|
461
453
|
}
|
|
462
454
|
return [4 /*yield*/, (0, loginSilent_1.loginSilent)({
|
|
463
455
|
oidcClientTsUserManager: oidcClientTsUserManager,
|
|
@@ -465,7 +457,7 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
465
457
|
configId: configId,
|
|
466
458
|
getExtraTokenParams: getExtraTokenParams
|
|
467
459
|
})];
|
|
468
|
-
case
|
|
460
|
+
case 21:
|
|
469
461
|
result_loginSilent = _e.sent();
|
|
470
462
|
(0, tsafe_1.assert)(result_loginSilent.outcome !== "token refreshed using refresh token");
|
|
471
463
|
if (result_loginSilent.outcome === "failure") {
|
|
@@ -486,16 +478,16 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
486
478
|
(0, tsafe_1.assert)();
|
|
487
479
|
authResponse = result_loginSilent.authResponse;
|
|
488
480
|
log === null || log === void 0 ? void 0 : log("Silent signin auth response", authResponse);
|
|
489
|
-
authResponse_error = authResponse
|
|
481
|
+
authResponse_error = authResponse.error;
|
|
490
482
|
oidcClientTsUser = undefined;
|
|
491
|
-
_e.label =
|
|
492
|
-
case
|
|
493
|
-
_e.trys.push([
|
|
494
|
-
return [4 /*yield*/, oidcClientTsUserManager.signinRedirectCallback((0,
|
|
495
|
-
case
|
|
483
|
+
_e.label = 22;
|
|
484
|
+
case 22:
|
|
485
|
+
_e.trys.push([22, 24, , 25]);
|
|
486
|
+
return [4 /*yield*/, oidcClientTsUserManager.signinRedirectCallback((0, AuthResponse_1.authResponseToUrl)(authResponse))];
|
|
487
|
+
case 23:
|
|
496
488
|
oidcClientTsUser = _e.sent();
|
|
497
|
-
return [3 /*break*/,
|
|
498
|
-
case
|
|
489
|
+
return [3 /*break*/, 25];
|
|
490
|
+
case 24:
|
|
499
491
|
error_2 = _e.sent();
|
|
500
492
|
(0, tsafe_1.assert)(error_2 instanceof Error);
|
|
501
493
|
if (error_2.message === "Failed to fetch") {
|
|
@@ -507,16 +499,27 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
507
499
|
if (authResponse_error === undefined) {
|
|
508
500
|
return [2 /*return*/, error_2];
|
|
509
501
|
}
|
|
510
|
-
return [3 /*break*/,
|
|
511
|
-
case
|
|
512
|
-
if (!(oidcClientTsUser === undefined)) return [3 /*break*/,
|
|
502
|
+
return [3 /*break*/, 25];
|
|
503
|
+
case 25:
|
|
504
|
+
if (!(oidcClientTsUser === undefined)) return [3 /*break*/, 29];
|
|
513
505
|
if (!(autoLogin ||
|
|
514
506
|
(persistedAuthState === "logged in" &&
|
|
515
507
|
(authResponse_error === "interaction_required" ||
|
|
516
508
|
authResponse_error === "login_required" ||
|
|
517
509
|
authResponse_error === "consent_required" ||
|
|
518
|
-
authResponse_error === "account_selection_required")))) return [3 /*break*/,
|
|
510
|
+
authResponse_error === "account_selection_required")))) return [3 /*break*/, 28];
|
|
519
511
|
(0, persistedAuthState_1.persistAuthState)({ configId: configId, state: undefined });
|
|
512
|
+
completeLoginOrRefreshProcess();
|
|
513
|
+
return [4 /*yield*/, (0, ongoingLoginOrRefreshProcesses_1.waitForAllOtherOngoingLoginOrRefreshProcessesToComplete)({
|
|
514
|
+
prUnlock: new Promise(function () { })
|
|
515
|
+
})];
|
|
516
|
+
case 26:
|
|
517
|
+
_e.sent();
|
|
518
|
+
if (persistedAuthState === "logged in") {
|
|
519
|
+
globalContext.evtRequestToPersistTokens.post({
|
|
520
|
+
configIdOfInstancePostingTheRequest: configId
|
|
521
|
+
});
|
|
522
|
+
}
|
|
520
523
|
return [4 /*yield*/, loginOrGoToAuthServer({
|
|
521
524
|
action: "login",
|
|
522
525
|
doForceReloadOnBfCache: true,
|
|
@@ -526,77 +529,39 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
526
529
|
transformUrlBeforeRedirect_local: undefined,
|
|
527
530
|
doForceInteraction: false
|
|
528
531
|
})];
|
|
529
|
-
case
|
|
532
|
+
case 27:
|
|
530
533
|
_e.sent();
|
|
531
|
-
|
|
532
|
-
|
|
534
|
+
(0, tsafe_1.assert)(false);
|
|
535
|
+
_e.label = 28;
|
|
536
|
+
case 28:
|
|
533
537
|
log === null || log === void 0 ? void 0 : log([
|
|
534
538
|
"The auth server responded with: ".concat(authResponse_error, " "),
|
|
535
539
|
"login_required" === authResponse_error
|
|
536
540
|
? "(login_required just means that there's no active session for the user)"
|
|
537
541
|
: ""
|
|
538
542
|
].join(""));
|
|
539
|
-
return [3 /*break*/,
|
|
540
|
-
case
|
|
543
|
+
return [3 /*break*/, 30];
|
|
544
|
+
case 29:
|
|
541
545
|
log === null || log === void 0 ? void 0 : log("Successful silent signed in");
|
|
542
546
|
return [2 /*return*/, {
|
|
543
547
|
oidcClientTsUser: oidcClientTsUser,
|
|
544
548
|
backFromAuthServer: undefined
|
|
545
549
|
}];
|
|
546
|
-
case
|
|
550
|
+
case 30:
|
|
547
551
|
// NOTE: The user is not logged in.
|
|
548
552
|
return [2 /*return*/, undefined];
|
|
549
553
|
}
|
|
550
554
|
});
|
|
551
|
-
}); })()
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
}
|
|
558
|
-
var oidcClientTsUser = result.oidcClientTsUser, backFromAuthServer = result.backFromAuthServer;
|
|
559
|
-
log_real_decoded_id_token: {
|
|
560
|
-
if (log === undefined) {
|
|
561
|
-
break log_real_decoded_id_token;
|
|
562
|
-
}
|
|
563
|
-
var idToken = oidcClientTsUser.id_token;
|
|
564
|
-
if (idToken === undefined) {
|
|
565
|
-
break log_real_decoded_id_token;
|
|
566
|
-
}
|
|
567
|
-
var decodedIdToken = (0, decodeJwt_1.decodeJwt)(idToken);
|
|
568
|
-
log([
|
|
569
|
-
"Decoded ID token",
|
|
570
|
-
decodedIdTokenSchema === undefined ? "" : " before `decodedIdTokenSchema.parse()`\n",
|
|
571
|
-
JSON.stringify(decodedIdToken, null, 2)
|
|
572
|
-
].join(""));
|
|
573
|
-
if (decodedIdTokenSchema === undefined) {
|
|
574
|
-
break log_real_decoded_id_token;
|
|
575
|
-
}
|
|
576
|
-
log([
|
|
577
|
-
"Decoded ID token after `decodedIdTokenSchema.parse()`\n",
|
|
578
|
-
JSON.stringify(decodedIdTokenSchema.parse(decodedIdToken), null, 2)
|
|
579
|
-
].join(""));
|
|
580
|
-
}
|
|
581
|
-
var tokens = (0, oidcClientTsUserToTokens_1.oidcClientTsUserToTokens)({
|
|
582
|
-
oidcClientTsUser: oidcClientTsUser,
|
|
583
|
-
decodedIdTokenSchema: decodedIdTokenSchema,
|
|
584
|
-
__unsafe_useIdTokenAsAccessToken: __unsafe_useIdTokenAsAccessToken,
|
|
585
|
-
decodedIdToken_previous: undefined,
|
|
586
|
-
log: log
|
|
587
|
-
});
|
|
588
|
-
if (tokens.refreshTokenExpirationTime < tokens.accessTokenExpirationTime) {
|
|
589
|
-
console.warn([
|
|
590
|
-
"The OIDC refresh token shorter than the one of the access token.",
|
|
591
|
-
"This is very unusual and probably a misconfiguration.",
|
|
592
|
-
"Check your oidc server configuration for ".concat(clientId, " ").concat(issuerUri)
|
|
593
|
-
].join(" "));
|
|
594
|
-
}
|
|
595
|
-
return { tokens: tokens, backFromAuthServer: backFromAuthServer };
|
|
555
|
+
}); })()];
|
|
556
|
+
case 4:
|
|
557
|
+
resultOfLoginProcess = _e.sent();
|
|
558
|
+
completeLoginOrRefreshProcess();
|
|
559
|
+
return [4 /*yield*/, (0, ongoingLoginOrRefreshProcesses_1.waitForAllOtherOngoingLoginOrRefreshProcessesToComplete)({
|
|
560
|
+
prUnlock: Promise.resolve()
|
|
596
561
|
})];
|
|
597
|
-
case
|
|
598
|
-
|
|
599
|
-
|
|
562
|
+
case 5:
|
|
563
|
+
_e.sent();
|
|
564
|
+
oidc_common = {
|
|
600
565
|
params: {
|
|
601
566
|
issuerUri: issuerUri,
|
|
602
567
|
clientId: clientId
|
|
@@ -606,6 +571,10 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
606
571
|
if (!(resultOfLoginProcess instanceof Error) && resultOfLoginProcess !== undefined) {
|
|
607
572
|
break not_loggedIn_case;
|
|
608
573
|
}
|
|
574
|
+
evtIsUserLoggedIn.post(false);
|
|
575
|
+
if ((0, persistedAuthState_1.getPersistedAuthState)({ configId: configId }) !== "explicitly logged out") {
|
|
576
|
+
(0, persistedAuthState_1.persistAuthState)({ configId: configId, state: undefined });
|
|
577
|
+
}
|
|
609
578
|
oidc_notLoggedIn = (function () {
|
|
610
579
|
if (resultOfLoginProcess instanceof Error) {
|
|
611
580
|
log === null || log === void 0 ? void 0 : log("User not logged in and there was an initialization error");
|
|
@@ -625,7 +594,7 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
625
594
|
"",
|
|
626
595
|
initializationError.message
|
|
627
596
|
].join("\n"));
|
|
628
|
-
return (0, tsafe_1.id)(__assign(__assign({},
|
|
597
|
+
return (0, tsafe_1.id)(__assign(__assign({}, oidc_common), { isUserLoggedIn: false, login: function () { return __awaiter(_this, void 0, void 0, function () {
|
|
629
598
|
return __generator(this, function (_a) {
|
|
630
599
|
alert("Authentication is currently unavailable. Please try again later.");
|
|
631
600
|
return [2 /*return*/, new Promise(function () { })];
|
|
@@ -634,34 +603,80 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
634
603
|
}
|
|
635
604
|
if (resultOfLoginProcess === undefined) {
|
|
636
605
|
log === null || log === void 0 ? void 0 : log("User not logged in");
|
|
637
|
-
return (0, tsafe_1.id)(__assign(__assign({},
|
|
638
|
-
var
|
|
639
|
-
var doesCurrentHrefRequiresAuth =
|
|
640
|
-
return
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
606
|
+
return (0, tsafe_1.id)(__assign(__assign({}, oidc_common), { isUserLoggedIn: false, login: function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
|
|
607
|
+
var _c;
|
|
608
|
+
var doesCurrentHrefRequiresAuth = _b.doesCurrentHrefRequiresAuth, extraQueryParams = _b.extraQueryParams, redirectUrl = _b.redirectUrl, transformUrlBeforeRedirect = _b.transformUrlBeforeRedirect;
|
|
609
|
+
return __generator(this, function (_d) {
|
|
610
|
+
switch (_d.label) {
|
|
611
|
+
case 0: return [4 /*yield*/, (0, ongoingLoginOrRefreshProcesses_1.waitForAllOtherOngoingLoginOrRefreshProcessesToComplete)({
|
|
612
|
+
prUnlock: (0, loginOrGoToAuthServer_1.getPrSafelyRestoredFromBfCacheAfterLoginBackNavigation)()
|
|
613
|
+
})];
|
|
614
|
+
case 1:
|
|
615
|
+
_d.sent();
|
|
616
|
+
return [2 /*return*/, loginOrGoToAuthServer({
|
|
617
|
+
action: "login",
|
|
618
|
+
doNavigateBackToLastPublicUrlIfTheTheUserNavigateBack: doesCurrentHrefRequiresAuth,
|
|
619
|
+
doForceReloadOnBfCache: false,
|
|
620
|
+
redirectUrl: (_c = redirectUrl !== null && redirectUrl !== void 0 ? redirectUrl : postLoginRedirectUrl_default) !== null && _c !== void 0 ? _c : window.location.href,
|
|
621
|
+
extraQueryParams_local: extraQueryParams,
|
|
622
|
+
transformUrlBeforeRedirect_local: transformUrlBeforeRedirect,
|
|
623
|
+
doForceInteraction: (0, persistedAuthState_1.getPersistedAuthState)({ configId: configId }) === "explicitly logged out"
|
|
624
|
+
})];
|
|
625
|
+
}
|
|
648
626
|
});
|
|
649
|
-
}, initializationError: undefined }));
|
|
627
|
+
}); }, initializationError: undefined }));
|
|
650
628
|
}
|
|
651
629
|
(0, tsafe_1.assert)(false);
|
|
652
630
|
})();
|
|
653
|
-
|
|
654
|
-
(0,
|
|
631
|
+
{
|
|
632
|
+
prOtherTabLogin = (0, loginPropagationToOtherTabs_1.getPrOtherTabLogin)({
|
|
633
|
+
configId: configId
|
|
634
|
+
}).prOtherTabLogin;
|
|
635
|
+
prOtherTabLogin.then(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
636
|
+
return __generator(this, function (_a) {
|
|
637
|
+
switch (_a.label) {
|
|
638
|
+
case 0:
|
|
639
|
+
log === null || log === void 0 ? void 0 : log("Other tab has logged in, reloading this tab");
|
|
640
|
+
return [4 /*yield*/, (0, ongoingLoginOrRefreshProcesses_1.waitForAllOtherOngoingLoginOrRefreshProcessesToComplete)({
|
|
641
|
+
prUnlock: new Promise(function () { })
|
|
642
|
+
})];
|
|
643
|
+
case 1:
|
|
644
|
+
_a.sent();
|
|
645
|
+
window.location.reload();
|
|
646
|
+
return [2 /*return*/];
|
|
647
|
+
}
|
|
648
|
+
});
|
|
649
|
+
}); });
|
|
655
650
|
}
|
|
656
|
-
toCallBeforeReturningOidcNotLoggedIn();
|
|
657
651
|
// @ts-expect-error: We know what we're doing
|
|
658
652
|
return [2 /*return*/, oidc_notLoggedIn];
|
|
659
653
|
}
|
|
660
654
|
log === null || log === void 0 ? void 0 : log("User is logged in");
|
|
661
|
-
|
|
655
|
+
evtIsUserLoggedIn.post(true);
|
|
656
|
+
currentTokens = (0, oidcClientTsUserToTokens_1.oidcClientTsUserToTokens)({
|
|
657
|
+
oidcClientTsUser: resultOfLoginProcess.oidcClientTsUser,
|
|
658
|
+
decodedIdTokenSchema: decodedIdTokenSchema,
|
|
659
|
+
__unsafe_useIdTokenAsAccessToken: __unsafe_useIdTokenAsAccessToken,
|
|
660
|
+
decodedIdToken_previous: undefined,
|
|
661
|
+
log: log
|
|
662
|
+
});
|
|
663
|
+
{
|
|
664
|
+
if ((0, persistedAuthState_1.getPersistedAuthState)({ configId: configId }) !== undefined) {
|
|
665
|
+
(0, persistedAuthState_1.persistAuthState)({ configId: configId, state: undefined });
|
|
666
|
+
}
|
|
667
|
+
if (!areThirdPartyCookiesAllowed) {
|
|
668
|
+
(0, persistedAuthState_1.persistAuthState)({
|
|
669
|
+
configId: configId,
|
|
670
|
+
state: {
|
|
671
|
+
stateDescription: "logged in",
|
|
672
|
+
untilTime: currentTokens.refreshTokenExpirationTime
|
|
673
|
+
}
|
|
674
|
+
});
|
|
675
|
+
}
|
|
676
|
+
}
|
|
662
677
|
autoLogoutCountdownTickCallbacks = new Set();
|
|
663
678
|
onTokenChanges = new Set();
|
|
664
|
-
oidc_loggedIn = (0, tsafe_1.id)(__assign(__assign({},
|
|
679
|
+
oidc_loggedIn = (0, tsafe_1.id)(__assign(__assign({}, oidc_common), { isUserLoggedIn: true, getTokens: function () { return currentTokens; }, getTokens_next: function () { return __awaiter(_this, void 0, void 0, function () {
|
|
665
680
|
return __generator(this, function (_a) {
|
|
666
681
|
switch (_a.label) {
|
|
667
682
|
case 0:
|
|
@@ -674,7 +689,7 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
674
689
|
}
|
|
675
690
|
});
|
|
676
691
|
}); }, getDecodedIdToken: function () { return currentTokens.decodedIdToken; }, logout: function (params) { return __awaiter(_this, void 0, void 0, function () {
|
|
677
|
-
var postLogoutRedirectUrl,
|
|
692
|
+
var postLogoutRedirectUrl, error_3, _a;
|
|
678
693
|
return __generator(this, function (_b) {
|
|
679
694
|
switch (_b.label) {
|
|
680
695
|
case 0:
|
|
@@ -683,11 +698,6 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
683
698
|
return [2 /*return*/, new Promise(function () { })];
|
|
684
699
|
}
|
|
685
700
|
globalContext.hasLogoutBeenCalled = true;
|
|
686
|
-
document.addEventListener("visibilitychange", function () {
|
|
687
|
-
if (document.visibilityState === "visible") {
|
|
688
|
-
location.reload();
|
|
689
|
-
}
|
|
690
|
-
});
|
|
691
701
|
postLogoutRedirectUrl = (function () {
|
|
692
702
|
switch (params.redirectTo) {
|
|
693
703
|
case "current page":
|
|
@@ -701,9 +711,17 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
701
711
|
});
|
|
702
712
|
}
|
|
703
713
|
})();
|
|
704
|
-
|
|
714
|
+
return [4 /*yield*/, (0, ongoingLoginOrRefreshProcesses_1.waitForAllOtherOngoingLoginOrRefreshProcessesToComplete)({
|
|
715
|
+
prUnlock: new Promise(function () { })
|
|
716
|
+
})];
|
|
705
717
|
case 1:
|
|
706
|
-
_b.
|
|
718
|
+
_b.sent();
|
|
719
|
+
window.addEventListener("pageshow", function () {
|
|
720
|
+
location.reload();
|
|
721
|
+
});
|
|
722
|
+
_b.label = 2;
|
|
723
|
+
case 2:
|
|
724
|
+
_b.trys.push([2, 4, , 11]);
|
|
707
725
|
return [4 /*yield*/, oidcClientTsUserManager.signoutRedirect({
|
|
708
726
|
state: (0, tsafe_1.id)({
|
|
709
727
|
configId: configId,
|
|
@@ -715,89 +733,108 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
715
733
|
}),
|
|
716
734
|
redirectMethod: "assign"
|
|
717
735
|
})];
|
|
718
|
-
case 2:
|
|
719
|
-
_b.sent();
|
|
720
|
-
return [3 /*break*/, 10];
|
|
721
736
|
case 3:
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
if (!(error_4.message === "No end session endpoint")) return [3 /*break*/, 8];
|
|
725
|
-
log === null || log === void 0 ? void 0 : log("No end session endpoint, managing logging state locally");
|
|
726
|
-
(0, persistedAuthState_1.persistAuthState)({ configId: configId, state: "explicitly logged out" });
|
|
727
|
-
_b.label = 4;
|
|
737
|
+
_b.sent();
|
|
738
|
+
return [3 /*break*/, 11];
|
|
728
739
|
case 4:
|
|
729
|
-
_b.
|
|
730
|
-
|
|
740
|
+
error_3 = _b.sent();
|
|
741
|
+
(0, tsafe_1.assert)((0, tsafe_1.is)(error_3));
|
|
742
|
+
if (!(error_3.message === "No end session endpoint")) return [3 /*break*/, 9];
|
|
743
|
+
log === null || log === void 0 ? void 0 : log("No end session endpoint, managing logging state locally");
|
|
744
|
+
(0, persistedAuthState_1.persistAuthState)({ configId: configId, state: { stateDescription: "explicitly logged out" } });
|
|
745
|
+
_b.label = 5;
|
|
731
746
|
case 5:
|
|
732
|
-
_b.
|
|
733
|
-
return [
|
|
747
|
+
_b.trys.push([5, 7, , 8]);
|
|
748
|
+
return [4 /*yield*/, oidcClientTsUserManager.removeUser()];
|
|
734
749
|
case 6:
|
|
735
|
-
|
|
736
|
-
return [3 /*break*/,
|
|
750
|
+
_b.sent();
|
|
751
|
+
return [3 /*break*/, 8];
|
|
737
752
|
case 7:
|
|
753
|
+
_a = _b.sent();
|
|
754
|
+
return [3 /*break*/, 8];
|
|
755
|
+
case 8:
|
|
756
|
+
(0, logoutPropagationToOtherTabs_1.notifyOtherTabsOfLogout)({
|
|
757
|
+
configId: configId,
|
|
758
|
+
redirectUrl: postLogoutRedirectUrl,
|
|
759
|
+
sessionId: sessionId
|
|
760
|
+
});
|
|
738
761
|
window.location.href = postLogoutRedirectUrl;
|
|
739
|
-
return [3 /*break*/,
|
|
740
|
-
case
|
|
741
|
-
case
|
|
742
|
-
case
|
|
762
|
+
return [3 /*break*/, 10];
|
|
763
|
+
case 9: throw error_3;
|
|
764
|
+
case 10: return [3 /*break*/, 11];
|
|
765
|
+
case 11: return [2 /*return*/, new Promise(function () { })];
|
|
743
766
|
}
|
|
744
767
|
});
|
|
745
768
|
}); }, renewTokens: (function () {
|
|
746
769
|
function renewTokens_nonMutexed(params) {
|
|
747
770
|
return __awaiter(this, void 0, void 0, function () {
|
|
748
|
-
var extraTokenParams, result_loginSilent, oidcClientTsUser, _a, authResponse, authResponse_error, oidcClientTsUser_scope,
|
|
771
|
+
var extraTokenParams, completeLoginOrRefreshProcess, result_loginSilent, oidcClientTsUser, _a, authResponse, authResponse_error, oidcClientTsUser_scope, error_4;
|
|
749
772
|
return __generator(this, function (_b) {
|
|
750
773
|
switch (_b.label) {
|
|
751
774
|
case 0:
|
|
752
775
|
extraTokenParams = params.extraTokenParams;
|
|
753
776
|
log === null || log === void 0 ? void 0 : log("Renewing tokens");
|
|
777
|
+
return [4 /*yield*/, (0, ongoingLoginOrRefreshProcesses_1.startLoginOrRefreshProcess)()];
|
|
778
|
+
case 1:
|
|
779
|
+
completeLoginOrRefreshProcess = (_b.sent()).completeLoginOrRefreshProcess;
|
|
754
780
|
return [4 /*yield*/, (0, loginSilent_1.loginSilent)({
|
|
755
781
|
oidcClientTsUserManager: oidcClientTsUserManager,
|
|
756
782
|
stateQueryParamValue_instance: stateQueryParamValue_instance,
|
|
757
783
|
configId: configId,
|
|
758
784
|
getExtraTokenParams: function () { return extraTokenParams; }
|
|
759
785
|
})];
|
|
760
|
-
case
|
|
786
|
+
case 2:
|
|
761
787
|
result_loginSilent = _b.sent();
|
|
762
788
|
if (result_loginSilent.outcome === "failure") {
|
|
789
|
+
completeLoginOrRefreshProcess();
|
|
763
790
|
throw new Error(result_loginSilent.cause);
|
|
764
791
|
}
|
|
765
792
|
_a = result_loginSilent.outcome;
|
|
766
793
|
switch (_a) {
|
|
767
|
-
case "token refreshed using refresh token": return [3 /*break*/,
|
|
768
|
-
case "got auth response from iframe": return [3 /*break*/,
|
|
794
|
+
case "token refreshed using refresh token": return [3 /*break*/, 3];
|
|
795
|
+
case "got auth response from iframe": return [3 /*break*/, 4];
|
|
769
796
|
}
|
|
770
|
-
return [3 /*break*/,
|
|
771
|
-
case
|
|
797
|
+
return [3 /*break*/, 12];
|
|
798
|
+
case 3:
|
|
772
799
|
{
|
|
773
800
|
log === null || log === void 0 ? void 0 : log("Refresh token used");
|
|
774
801
|
oidcClientTsUser = result_loginSilent.oidcClientTsUser;
|
|
775
802
|
}
|
|
776
|
-
return [3 /*break*/,
|
|
777
|
-
case
|
|
803
|
+
return [3 /*break*/, 13];
|
|
804
|
+
case 4:
|
|
778
805
|
authResponse = result_loginSilent.authResponse;
|
|
779
806
|
log === null || log === void 0 ? void 0 : log("Tokens refresh using iframe", authResponse);
|
|
780
|
-
authResponse_error = authResponse
|
|
807
|
+
authResponse_error = authResponse.error;
|
|
781
808
|
oidcClientTsUser_scope = undefined;
|
|
782
|
-
_b.label =
|
|
783
|
-
case 4:
|
|
784
|
-
_b.trys.push([4, 6, , 7]);
|
|
785
|
-
return [4 /*yield*/, oidcClientTsUserManager.signinRedirectCallback((0, loginSilent_1.authResponseToUrl)(authResponse))];
|
|
809
|
+
_b.label = 5;
|
|
786
810
|
case 5:
|
|
811
|
+
_b.trys.push([5, 7, , 8]);
|
|
812
|
+
return [4 /*yield*/, oidcClientTsUserManager.signinRedirectCallback((0, AuthResponse_1.authResponseToUrl)(authResponse))];
|
|
813
|
+
case 6:
|
|
787
814
|
oidcClientTsUser_scope =
|
|
788
815
|
_b.sent();
|
|
789
|
-
return [3 /*break*/,
|
|
790
|
-
case
|
|
791
|
-
|
|
792
|
-
(0, tsafe_1.assert)(
|
|
816
|
+
return [3 /*break*/, 8];
|
|
817
|
+
case 7:
|
|
818
|
+
error_4 = _b.sent();
|
|
819
|
+
(0, tsafe_1.assert)(error_4 instanceof Error);
|
|
793
820
|
if (authResponse_error === undefined) {
|
|
794
|
-
|
|
821
|
+
completeLoginOrRefreshProcess();
|
|
822
|
+
throw error_4;
|
|
795
823
|
}
|
|
796
824
|
oidcClientTsUser_scope = undefined;
|
|
797
|
-
return [3 /*break*/,
|
|
798
|
-
case
|
|
799
|
-
if (!(oidcClientTsUser_scope === undefined)) return [3 /*break*/,
|
|
825
|
+
return [3 /*break*/, 8];
|
|
826
|
+
case 8:
|
|
827
|
+
if (!(oidcClientTsUser_scope === undefined)) return [3 /*break*/, 11];
|
|
800
828
|
(0, persistedAuthState_1.persistAuthState)({ configId: configId, state: undefined });
|
|
829
|
+
completeLoginOrRefreshProcess();
|
|
830
|
+
return [4 /*yield*/, (0, ongoingLoginOrRefreshProcesses_1.waitForAllOtherOngoingLoginOrRefreshProcessesToComplete)({
|
|
831
|
+
prUnlock: new Promise(function () { })
|
|
832
|
+
})];
|
|
833
|
+
case 9:
|
|
834
|
+
_b.sent();
|
|
835
|
+
globalContext.evtRequestToPersistTokens.post({
|
|
836
|
+
configIdOfInstancePostingTheRequest: configId
|
|
837
|
+
});
|
|
801
838
|
return [4 /*yield*/, loginOrGoToAuthServer({
|
|
802
839
|
action: "login",
|
|
803
840
|
redirectUrl: window.location.href,
|
|
@@ -807,17 +844,17 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
807
844
|
doNavigateBackToLastPublicUrlIfTheTheUserNavigateBack: false,
|
|
808
845
|
doForceInteraction: false
|
|
809
846
|
})];
|
|
810
|
-
case
|
|
847
|
+
case 10:
|
|
811
848
|
_b.sent();
|
|
812
849
|
(0, tsafe_1.assert)(false);
|
|
813
|
-
_b.label =
|
|
814
|
-
case
|
|
850
|
+
_b.label = 11;
|
|
851
|
+
case 11:
|
|
815
852
|
oidcClientTsUser = oidcClientTsUser_scope;
|
|
816
|
-
return [3 /*break*/,
|
|
817
|
-
case
|
|
853
|
+
return [3 /*break*/, 13];
|
|
854
|
+
case 12:
|
|
818
855
|
(0, tsafe_1.assert)(false);
|
|
819
|
-
return [3 /*break*/,
|
|
820
|
-
case
|
|
856
|
+
return [3 /*break*/, 13];
|
|
857
|
+
case 13:
|
|
821
858
|
currentTokens = (0, oidcClientTsUserToTokens_1.oidcClientTsUserToTokens)({
|
|
822
859
|
oidcClientTsUser: oidcClientTsUser,
|
|
823
860
|
decodedIdTokenSchema: decodedIdTokenSchema,
|
|
@@ -825,7 +862,17 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
825
862
|
decodedIdToken_previous: currentTokens.decodedIdToken,
|
|
826
863
|
log: log
|
|
827
864
|
});
|
|
865
|
+
if ((0, persistedAuthState_1.getPersistedAuthState)({ configId: configId }) !== undefined) {
|
|
866
|
+
(0, persistedAuthState_1.persistAuthState)({
|
|
867
|
+
configId: configId,
|
|
868
|
+
state: {
|
|
869
|
+
stateDescription: "logged in",
|
|
870
|
+
untilTime: currentTokens.refreshTokenExpirationTime
|
|
871
|
+
}
|
|
872
|
+
});
|
|
873
|
+
}
|
|
828
874
|
Array.from(onTokenChanges).forEach(function (onTokenChange) { return onTokenChange(currentTokens); });
|
|
875
|
+
completeLoginOrRefreshProcess();
|
|
829
876
|
return [2 /*return*/];
|
|
830
877
|
}
|
|
831
878
|
});
|
|
@@ -921,28 +968,51 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
921
968
|
homeUrl: homeAndCallbackUrl,
|
|
922
969
|
sessionId: sessionId
|
|
923
970
|
}).prOtherTabLogout;
|
|
924
|
-
prOtherTabLogout.then(function (_a) {
|
|
925
|
-
var redirectUrl =
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
971
|
+
prOtherTabLogout.then(function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
|
|
972
|
+
var redirectUrl = _b.redirectUrl;
|
|
973
|
+
return __generator(this, function (_c) {
|
|
974
|
+
switch (_c.label) {
|
|
975
|
+
case 0:
|
|
976
|
+
log === null || log === void 0 ? void 0 : log("Other tab has logged out, redirecting to ".concat(redirectUrl));
|
|
977
|
+
return [4 /*yield*/, (0, ongoingLoginOrRefreshProcesses_1.waitForAllOtherOngoingLoginOrRefreshProcessesToComplete)({
|
|
978
|
+
prUnlock: new Promise(function () { })
|
|
979
|
+
})];
|
|
980
|
+
case 1:
|
|
981
|
+
_c.sent();
|
|
982
|
+
window.addEventListener("pageshow", function () {
|
|
983
|
+
location.reload();
|
|
984
|
+
});
|
|
985
|
+
window.location.href = redirectUrl;
|
|
986
|
+
return [2 /*return*/];
|
|
987
|
+
}
|
|
988
|
+
});
|
|
989
|
+
}); });
|
|
929
990
|
}
|
|
930
991
|
(function scheduleRenew() {
|
|
931
992
|
var _this = this;
|
|
932
|
-
var login_dueToExpiration = function () {
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
993
|
+
var login_dueToExpiration = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
994
|
+
return __generator(this, function (_a) {
|
|
995
|
+
switch (_a.label) {
|
|
996
|
+
case 0: return [4 /*yield*/, (0, ongoingLoginOrRefreshProcesses_1.waitForAllOtherOngoingLoginOrRefreshProcessesToComplete)({
|
|
997
|
+
prUnlock: new Promise(function () { })
|
|
998
|
+
})];
|
|
999
|
+
case 1:
|
|
1000
|
+
_a.sent();
|
|
1001
|
+
(0, persistedAuthState_1.persistAuthState)({ configId: configId, state: undefined });
|
|
1002
|
+
return [2 /*return*/, loginOrGoToAuthServer({
|
|
1003
|
+
action: "login",
|
|
1004
|
+
redirectUrl: window.location.href,
|
|
1005
|
+
doForceReloadOnBfCache: true,
|
|
1006
|
+
extraQueryParams_local: undefined,
|
|
1007
|
+
transformUrlBeforeRedirect_local: undefined,
|
|
1008
|
+
// NOTE: Wether or not it's the preferred behavior, pushing to history
|
|
1009
|
+
// only works on user interaction so it have to be false
|
|
1010
|
+
doNavigateBackToLastPublicUrlIfTheTheUserNavigateBack: false,
|
|
1011
|
+
doForceInteraction: true
|
|
1012
|
+
})];
|
|
1013
|
+
}
|
|
944
1014
|
});
|
|
945
|
-
};
|
|
1015
|
+
}); };
|
|
946
1016
|
var msBeforeExpiration = (0, oidcClientTsUserToTokens_1.getMsBeforeExpiration)(currentTokens);
|
|
947
1017
|
if (msBeforeExpiration <= MIN_RENEW_BEFORE_EXPIRE_MS) {
|
|
948
1018
|
// NOTE: We just got a new token that is about to expire. This means that
|
|
@@ -989,8 +1059,11 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
989
1059
|
}).unsubscribe;
|
|
990
1060
|
})();
|
|
991
1061
|
auto_logout: {
|
|
992
|
-
if (currentTokens.
|
|
993
|
-
|
|
1062
|
+
if ((!currentTokens.hasRefreshToken || currentTokens.refreshTokenExpirationTime === undefined) &&
|
|
1063
|
+
__unsafe_ssoSessionIdleSeconds === undefined) {
|
|
1064
|
+
log === null || log === void 0 ? void 0 : log("".concat(currentTokens.hasRefreshToken
|
|
1065
|
+
? "The refresh token is opaque, we can't read it's expiration time"
|
|
1066
|
+
: "No refresh token", ", and __unsafe_ssoSessionIdleSeconds was not set, can't implement auto logout mechanism"));
|
|
994
1067
|
break auto_logout;
|
|
995
1068
|
}
|
|
996
1069
|
startCountdown_2 = (0, startCountdown_1.createStartCountdown)({
|
|
@@ -998,7 +1071,9 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
998
1071
|
var getCountdownEndTime = function () {
|
|
999
1072
|
return __unsafe_ssoSessionIdleSeconds !== undefined
|
|
1000
1073
|
? Date.now() + __unsafe_ssoSessionIdleSeconds * 1000
|
|
1001
|
-
: currentTokens.
|
|
1074
|
+
: ((0, tsafe_1.assert)(currentTokens.hasRefreshToken),
|
|
1075
|
+
(0, tsafe_1.assert)(currentTokens.refreshTokenExpirationTime !== undefined),
|
|
1076
|
+
currentTokens.refreshTokenExpirationTime);
|
|
1002
1077
|
};
|
|
1003
1078
|
var durationBeforeAutoLogout = (0, toHumanReadableDuration_1.toHumanReadableDuration)(getCountdownEndTime() - Date.now());
|
|
1004
1079
|
log === null || log === void 0 ? void 0 : log([
|
|
@@ -1022,13 +1097,11 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
1022
1097
|
}
|
|
1023
1098
|
}).startCountdown;
|
|
1024
1099
|
stopCountdown_1 = undefined;
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
}
|
|
1031
|
-
globalContext.$isUserActive.subscribe(function (isUserActive) {
|
|
1100
|
+
evtIsUserActive = (0, evtIsUserActive_1.createEvtIsUserActive)({
|
|
1101
|
+
configId: configId,
|
|
1102
|
+
sessionId: sessionId
|
|
1103
|
+
});
|
|
1104
|
+
evtIsUserActive.subscribe(function (isUserActive) {
|
|
1032
1105
|
if (isUserActive) {
|
|
1033
1106
|
if (stopCountdown_1 !== undefined) {
|
|
1034
1107
|
stopCountdown_1();
|
|
@@ -1041,15 +1114,6 @@ function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
1041
1114
|
}
|
|
1042
1115
|
});
|
|
1043
1116
|
}
|
|
1044
|
-
{
|
|
1045
|
-
if ((0, persistedAuthState_1.getPersistedAuthState)({ configId: configId }) !== undefined) {
|
|
1046
|
-
(0, persistedAuthState_1.persistAuthState)({ configId: configId, state: undefined });
|
|
1047
|
-
}
|
|
1048
|
-
if (!areThirdPartyCookiesAllowed) {
|
|
1049
|
-
(0, persistedAuthState_1.persistAuthState)({ configId: configId, state: "logged in" });
|
|
1050
|
-
}
|
|
1051
|
-
}
|
|
1052
|
-
toCallBeforeReturningOidcLoggedIn();
|
|
1053
1117
|
return [2 /*return*/, oidc_loggedIn];
|
|
1054
1118
|
}
|
|
1055
1119
|
});
|