oidc-spa 6.14.2 → 6.15.1
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/core/OidcInitializationError.d.ts +1 -0
- package/core/OidcInitializationError.js +44 -31
- package/core/OidcInitializationError.js.map +1 -1
- package/core/createOidc.d.ts +6 -0
- package/core/createOidc.js +64 -52
- package/core/createOidc.js.map +1 -1
- package/core/handleOidcCallback.js +9 -1
- package/core/handleOidcCallback.js.map +1 -1
- package/core/loginOrGoToAuthServer.js +238 -179
- package/core/loginOrGoToAuthServer.js.map +1 -1
- package/core/logoutPropagationToOtherTabs.d.ts +1 -5
- package/core/logoutPropagationToOtherTabs.js +3 -10
- package/core/logoutPropagationToOtherTabs.js.map +1 -1
- package/package.json +1 -1
- package/src/core/OidcInitializationError.ts +59 -34
- package/src/core/createOidc.ts +73 -42
- package/src/core/handleOidcCallback.ts +11 -2
- package/src/core/loginOrGoToAuthServer.ts +16 -1
- package/src/core/logoutPropagationToOtherTabs.ts +6 -24
|
@@ -1,4 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
2
38
|
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
39
|
var t = {};
|
|
4
40
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
@@ -72,192 +108,215 @@ function createLoginOrGoToAuthServer(params) {
|
|
|
72
108
|
var LOCAL_STORAGE_KEY_TO_CLEAR_WHEN_USER_LOGGED_IN = "oidc-spa.login-redirect-initiated:".concat(configId);
|
|
73
109
|
var lastPublicUrl = undefined;
|
|
74
110
|
function loginOrGoToAuthServer(params) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
globalContext.evtHasLoginBeenCalled.current = true;
|
|
86
|
-
bf_cache_handling: {
|
|
87
|
-
if (rest.doForceReloadOnBfCache) {
|
|
88
|
-
window.removeEventListener("pageshow", function () {
|
|
89
|
-
location.reload();
|
|
90
|
-
});
|
|
91
|
-
break bf_cache_handling;
|
|
92
|
-
}
|
|
93
|
-
localStorage.setItem(LOCAL_STORAGE_KEY_TO_CLEAR_WHEN_USER_LOGGED_IN, "true");
|
|
94
|
-
var callback_1 = function () {
|
|
95
|
-
window.removeEventListener("pageshow", callback_1);
|
|
96
|
-
log === null || log === void 0 ? void 0 : log("We came back from the login pages and the state of the app has been restored");
|
|
97
|
-
if (rest.doNavigateBackToLastPublicUrlIfTheTheUserNavigateBack) {
|
|
98
|
-
if (lastPublicUrl !== undefined) {
|
|
99
|
-
log === null || log === void 0 ? void 0 : log("Loading last public route: ".concat(lastPublicUrl));
|
|
100
|
-
window.location.href = lastPublicUrl;
|
|
111
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
112
|
+
var redirectUrl_params, extraQueryParams_local, transformUrl, rest, dVisible_1, onVisible_1, callback_1, redirectUrl, stateData, isSilent, transformUrl_oidcClientTs, redirectMethod;
|
|
113
|
+
return __generator(this, function (_a) {
|
|
114
|
+
switch (_a.label) {
|
|
115
|
+
case 0:
|
|
116
|
+
redirectUrl_params = params.redirectUrl, extraQueryParams_local = params.extraQueryParams_local, transformUrl = params.transformUrlBeforeRedirect_local, rest = __rest(params, ["redirectUrl", "extraQueryParams_local", "transformUrlBeforeRedirect_local"]);
|
|
117
|
+
log === null || log === void 0 ? void 0 : log("Calling loginOrGoToAuthServer ".concat(JSON.stringify(params, null, 2)));
|
|
118
|
+
if (rest.action !== "login") {
|
|
119
|
+
return [3 /*break*/, 3];
|
|
101
120
|
}
|
|
102
|
-
|
|
103
|
-
log === null || log === void 0 ? void 0 : log("
|
|
104
|
-
|
|
121
|
+
if (globalContext.evtHasLoginBeenCalled.current) {
|
|
122
|
+
log === null || log === void 0 ? void 0 : log("login() has already been called, ignoring the call");
|
|
123
|
+
return [2 /*return*/, new Promise(function () { })];
|
|
105
124
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
log === null || log === void 0 ? void 0 : log("and the user doesn't seem to be authenticated, avoiding a reload");
|
|
115
|
-
globalContext.evtHasLoginBeenCalled.current = false;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
window.addEventListener("pageshow", callback_1);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
var redirectUrl = (0, toFullyQualifiedUrl_1.toFullyQualifiedUrl)({
|
|
123
|
-
urlish: redirectUrl_params,
|
|
124
|
-
doAssertNoQueryParams: false
|
|
125
|
-
});
|
|
126
|
-
log === null || log === void 0 ? void 0 : log("redirectUrl: ".concat(redirectUrl));
|
|
127
|
-
var stateData = {
|
|
128
|
-
context: "redirect",
|
|
129
|
-
redirectUrl: redirectUrl,
|
|
130
|
-
extraQueryParams: {},
|
|
131
|
-
hasBeenProcessedByCallback: false,
|
|
132
|
-
configId: configId,
|
|
133
|
-
action: "login",
|
|
134
|
-
redirectUrl_consentRequiredCase: (function () {
|
|
135
|
-
switch (rest.action) {
|
|
136
|
-
case "login":
|
|
137
|
-
return lastPublicUrl !== null && lastPublicUrl !== void 0 ? lastPublicUrl : homeUrl;
|
|
138
|
-
case "go to auth server":
|
|
139
|
-
return redirectUrl;
|
|
140
|
-
}
|
|
141
|
-
})()
|
|
142
|
-
};
|
|
143
|
-
var isSilent = rest.action === "login" && rest.interaction === "ensure no interaction";
|
|
144
|
-
var transformUrl_oidcClientTs = function (url) {
|
|
145
|
-
[
|
|
146
|
-
[
|
|
147
|
-
undefined,
|
|
148
|
-
transformUrlBeforeRedirect_next === undefined
|
|
149
|
-
? undefined
|
|
150
|
-
: function (url) {
|
|
151
|
-
return transformUrlBeforeRedirect_next({
|
|
152
|
-
isSilent: isSilent,
|
|
153
|
-
authorizationUrl: url
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
],
|
|
157
|
-
[getExtraQueryParams, transformUrlBeforeRedirect],
|
|
158
|
-
[extraQueryParams_local, transformUrl]
|
|
159
|
-
].forEach(function (_a, i) {
|
|
160
|
-
var e_1, _b, e_2, _c;
|
|
161
|
-
var _d = __read(_a, 2), extraQueryParamsMaybeGetter = _d[0], transformUrlBeforeRedirect = _d[1];
|
|
162
|
-
var url_before = i !== 2 ? undefined : url;
|
|
163
|
-
add_extra_query_params: {
|
|
164
|
-
if (extraQueryParamsMaybeGetter === undefined) {
|
|
165
|
-
break add_extra_query_params;
|
|
166
|
-
}
|
|
167
|
-
var extraQueryParams = typeof extraQueryParamsMaybeGetter === "function"
|
|
168
|
-
? extraQueryParamsMaybeGetter({ isSilent: isSilent, url: url })
|
|
169
|
-
: extraQueryParamsMaybeGetter;
|
|
170
|
-
try {
|
|
171
|
-
for (var _e = __values(Object.entries(extraQueryParams)), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
172
|
-
var _g = __read(_f.value, 2), name_1 = _g[0], value = _g[1];
|
|
173
|
-
if (value === undefined) {
|
|
174
|
-
continue;
|
|
125
|
+
globalContext.evtHasLoginBeenCalled.current = true;
|
|
126
|
+
if (!(document.visibilityState !== "visible")) return [3 /*break*/, 2];
|
|
127
|
+
dVisible_1 = new Deferred_1.Deferred();
|
|
128
|
+
onVisible_1 = function () {
|
|
129
|
+
if (document.visibilityState !== "visible") {
|
|
130
|
+
return;
|
|
175
131
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}
|
|
192
|
-
apply_transform_url: {
|
|
193
|
-
if (transformUrlBeforeRedirect === undefined) {
|
|
194
|
-
break apply_transform_url;
|
|
195
|
-
}
|
|
196
|
-
url = transformUrlBeforeRedirect(url);
|
|
197
|
-
}
|
|
198
|
-
update_state: {
|
|
199
|
-
if (url_before === undefined) {
|
|
200
|
-
break update_state;
|
|
201
|
-
}
|
|
202
|
-
var paramValueByName_current = (0, urlSearchParams_1.getAllSearchParams)(url);
|
|
203
|
-
var paramValueByName_before = (0, urlSearchParams_1.getAllSearchParams)(url_before);
|
|
204
|
-
try {
|
|
205
|
-
for (var _h = __values(Object.entries(paramValueByName_current)), _j = _h.next(); !_j.done; _j = _h.next()) {
|
|
206
|
-
var _k = __read(_j.value, 2), name_2 = _k[0], value_current = _k[1];
|
|
207
|
-
var value_before = paramValueByName_before[name_2];
|
|
208
|
-
if (value_before === value_current) {
|
|
209
|
-
continue;
|
|
132
|
+
document.removeEventListener("visibilitychange", onVisible_1);
|
|
133
|
+
dVisible_1.resolve();
|
|
134
|
+
};
|
|
135
|
+
document.addEventListener("visibilitychange", onVisible_1);
|
|
136
|
+
return [4 /*yield*/, dVisible_1.pr];
|
|
137
|
+
case 1:
|
|
138
|
+
_a.sent();
|
|
139
|
+
_a.label = 2;
|
|
140
|
+
case 2:
|
|
141
|
+
bf_cache_handling: {
|
|
142
|
+
if (rest.doForceReloadOnBfCache) {
|
|
143
|
+
window.removeEventListener("pageshow", function () {
|
|
144
|
+
location.reload();
|
|
145
|
+
});
|
|
146
|
+
break bf_cache_handling;
|
|
210
147
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
148
|
+
localStorage.setItem(LOCAL_STORAGE_KEY_TO_CLEAR_WHEN_USER_LOGGED_IN, "true");
|
|
149
|
+
callback_1 = function () {
|
|
150
|
+
window.removeEventListener("pageshow", callback_1);
|
|
151
|
+
log === null || log === void 0 ? void 0 : log("We came back from the login pages and the state of the app has been restored");
|
|
152
|
+
if (rest.doNavigateBackToLastPublicUrlIfTheTheUserNavigateBack) {
|
|
153
|
+
if (lastPublicUrl !== undefined) {
|
|
154
|
+
log === null || log === void 0 ? void 0 : log("Loading last public route: ".concat(lastPublicUrl));
|
|
155
|
+
window.location.href = lastPublicUrl;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
log === null || log === void 0 ? void 0 : log("We don't know the last public route, navigating back in history");
|
|
159
|
+
window.history.back();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
log === null || log === void 0 ? void 0 : log("The current page doesn't require auth...");
|
|
164
|
+
if (localStorage.getItem(LOCAL_STORAGE_KEY_TO_CLEAR_WHEN_USER_LOGGED_IN) === null) {
|
|
165
|
+
log === null || log === void 0 ? void 0 : log("but the user is now authenticated, reloading the page");
|
|
166
|
+
location.reload();
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
log === null || log === void 0 ? void 0 : log("and the user doesn't seem to be authenticated, avoiding a reload");
|
|
170
|
+
globalContext.evtHasLoginBeenCalled.current = false;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
window.addEventListener("pageshow", callback_1);
|
|
218
175
|
}
|
|
219
|
-
|
|
220
|
-
|
|
176
|
+
_a.label = 3;
|
|
177
|
+
case 3:
|
|
178
|
+
redirectUrl = (0, toFullyQualifiedUrl_1.toFullyQualifiedUrl)({
|
|
179
|
+
urlish: redirectUrl_params,
|
|
180
|
+
doAssertNoQueryParams: false
|
|
181
|
+
});
|
|
182
|
+
log === null || log === void 0 ? void 0 : log("redirectUrl: ".concat(redirectUrl));
|
|
183
|
+
stateData = {
|
|
184
|
+
context: "redirect",
|
|
185
|
+
redirectUrl: redirectUrl,
|
|
186
|
+
extraQueryParams: {},
|
|
187
|
+
hasBeenProcessedByCallback: false,
|
|
188
|
+
configId: configId,
|
|
189
|
+
action: "login",
|
|
190
|
+
redirectUrl_consentRequiredCase: (function () {
|
|
191
|
+
switch (rest.action) {
|
|
192
|
+
case "login":
|
|
193
|
+
return lastPublicUrl !== null && lastPublicUrl !== void 0 ? lastPublicUrl : homeUrl;
|
|
194
|
+
case "go to auth server":
|
|
195
|
+
return redirectUrl;
|
|
196
|
+
}
|
|
197
|
+
})()
|
|
198
|
+
};
|
|
199
|
+
isSilent = rest.action === "login" && rest.interaction === "ensure no interaction";
|
|
200
|
+
transformUrl_oidcClientTs = function (url) {
|
|
201
|
+
[
|
|
202
|
+
[
|
|
203
|
+
undefined,
|
|
204
|
+
transformUrlBeforeRedirect_next === undefined
|
|
205
|
+
? undefined
|
|
206
|
+
: function (url) {
|
|
207
|
+
return transformUrlBeforeRedirect_next({
|
|
208
|
+
isSilent: isSilent,
|
|
209
|
+
authorizationUrl: url
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
],
|
|
213
|
+
[getExtraQueryParams, transformUrlBeforeRedirect],
|
|
214
|
+
[extraQueryParams_local, transformUrl]
|
|
215
|
+
].forEach(function (_a, i) {
|
|
216
|
+
var e_1, _b, e_2, _c;
|
|
217
|
+
var _d = __read(_a, 2), extraQueryParamsMaybeGetter = _d[0], transformUrlBeforeRedirect = _d[1];
|
|
218
|
+
var url_before = i !== 2 ? undefined : url;
|
|
219
|
+
add_extra_query_params: {
|
|
220
|
+
if (extraQueryParamsMaybeGetter === undefined) {
|
|
221
|
+
break add_extra_query_params;
|
|
222
|
+
}
|
|
223
|
+
var extraQueryParams = typeof extraQueryParamsMaybeGetter === "function"
|
|
224
|
+
? extraQueryParamsMaybeGetter({ isSilent: isSilent, url: url })
|
|
225
|
+
: extraQueryParamsMaybeGetter;
|
|
226
|
+
try {
|
|
227
|
+
for (var _e = __values(Object.entries(extraQueryParams)), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
228
|
+
var _g = __read(_f.value, 2), name_1 = _g[0], value = _g[1];
|
|
229
|
+
if (value === undefined) {
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
url = (0, urlSearchParams_1.addOrUpdateSearchParam)({
|
|
233
|
+
url: url,
|
|
234
|
+
name: name_1,
|
|
235
|
+
value: value,
|
|
236
|
+
encodeMethod: "www-form"
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
241
|
+
finally {
|
|
242
|
+
try {
|
|
243
|
+
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
|
|
244
|
+
}
|
|
245
|
+
finally { if (e_1) throw e_1.error; }
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
apply_transform_url: {
|
|
249
|
+
if (transformUrlBeforeRedirect === undefined) {
|
|
250
|
+
break apply_transform_url;
|
|
251
|
+
}
|
|
252
|
+
url = transformUrlBeforeRedirect(url);
|
|
253
|
+
}
|
|
254
|
+
update_state: {
|
|
255
|
+
if (url_before === undefined) {
|
|
256
|
+
break update_state;
|
|
257
|
+
}
|
|
258
|
+
var paramValueByName_current = (0, urlSearchParams_1.getAllSearchParams)(url);
|
|
259
|
+
var paramValueByName_before = (0, urlSearchParams_1.getAllSearchParams)(url_before);
|
|
260
|
+
try {
|
|
261
|
+
for (var _h = __values(Object.entries(paramValueByName_current)), _j = _h.next(); !_j.done; _j = _h.next()) {
|
|
262
|
+
var _k = __read(_j.value, 2), name_2 = _k[0], value_current = _k[1];
|
|
263
|
+
var value_before = paramValueByName_before[name_2];
|
|
264
|
+
if (value_before === value_current) {
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
stateData.extraQueryParams[name_2] = value_current;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
271
|
+
finally {
|
|
272
|
+
try {
|
|
273
|
+
if (_j && !_j.done && (_c = _h.return)) _c.call(_h);
|
|
274
|
+
}
|
|
275
|
+
finally { if (e_2) throw e_2.error; }
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
return url;
|
|
280
|
+
};
|
|
281
|
+
redirectMethod = (function () {
|
|
282
|
+
switch (rest.action) {
|
|
283
|
+
case "login":
|
|
284
|
+
return rest.doNavigateBackToLastPublicUrlIfTheTheUserNavigateBack
|
|
285
|
+
? "replace"
|
|
286
|
+
: "assign";
|
|
287
|
+
case "go to auth server":
|
|
288
|
+
return "assign";
|
|
289
|
+
}
|
|
290
|
+
})();
|
|
291
|
+
log === null || log === void 0 ? void 0 : log("redirectMethod: ".concat(redirectMethod));
|
|
292
|
+
return [2 /*return*/, oidcClientTsUserManager
|
|
293
|
+
.signinRedirect({
|
|
294
|
+
state: stateData,
|
|
295
|
+
redirectMethod: redirectMethod,
|
|
296
|
+
prompt: (function () {
|
|
297
|
+
switch (rest.action) {
|
|
298
|
+
case "go to auth server":
|
|
299
|
+
return undefined;
|
|
300
|
+
case "login":
|
|
301
|
+
switch (rest.interaction) {
|
|
302
|
+
case "ensure no interaction":
|
|
303
|
+
return "none";
|
|
304
|
+
case "ensure interaction":
|
|
305
|
+
return "consent";
|
|
306
|
+
case "directly redirect if active session show login otherwise":
|
|
307
|
+
return undefined;
|
|
308
|
+
}
|
|
309
|
+
tsafe_1.assert;
|
|
310
|
+
}
|
|
311
|
+
tsafe_1.assert;
|
|
312
|
+
})(),
|
|
313
|
+
transformUrl: transformUrl_oidcClientTs,
|
|
314
|
+
extraTokenParams: getExtraTokenParams === undefined ? undefined : (0, tsafe_1.noUndefined)(getExtraTokenParams())
|
|
315
|
+
})
|
|
316
|
+
.then(function () { return new Promise(function () { }); })];
|
|
221
317
|
}
|
|
222
318
|
});
|
|
223
|
-
|
|
224
|
-
};
|
|
225
|
-
var redirectMethod = (function () {
|
|
226
|
-
switch (rest.action) {
|
|
227
|
-
case "login":
|
|
228
|
-
return rest.doNavigateBackToLastPublicUrlIfTheTheUserNavigateBack
|
|
229
|
-
? "replace"
|
|
230
|
-
: "assign";
|
|
231
|
-
case "go to auth server":
|
|
232
|
-
return "assign";
|
|
233
|
-
}
|
|
234
|
-
})();
|
|
235
|
-
log === null || log === void 0 ? void 0 : log("redirectMethod: ".concat(redirectMethod));
|
|
236
|
-
return oidcClientTsUserManager
|
|
237
|
-
.signinRedirect({
|
|
238
|
-
state: stateData,
|
|
239
|
-
redirectMethod: redirectMethod,
|
|
240
|
-
prompt: (function () {
|
|
241
|
-
switch (rest.action) {
|
|
242
|
-
case "go to auth server":
|
|
243
|
-
return undefined;
|
|
244
|
-
case "login":
|
|
245
|
-
switch (rest.interaction) {
|
|
246
|
-
case "ensure no interaction":
|
|
247
|
-
return "none";
|
|
248
|
-
case "ensure interaction":
|
|
249
|
-
return "consent";
|
|
250
|
-
case "directly redirect if active session show login otherwise":
|
|
251
|
-
return undefined;
|
|
252
|
-
}
|
|
253
|
-
tsafe_1.assert;
|
|
254
|
-
}
|
|
255
|
-
tsafe_1.assert;
|
|
256
|
-
})(),
|
|
257
|
-
transformUrl: transformUrl_oidcClientTs,
|
|
258
|
-
extraTokenParams: getExtraTokenParams === undefined ? undefined : (0, tsafe_1.noUndefined)(getExtraTokenParams())
|
|
259
|
-
})
|
|
260
|
-
.then(function () { return new Promise(function () { }); });
|
|
319
|
+
});
|
|
261
320
|
}
|
|
262
321
|
var unsubscribe = evtIsUserLoggedIn.subscribe(function (isLoggedIn) {
|
|
263
322
|
unsubscribe();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loginOrGoToAuthServer.js","sourceRoot":"","sources":["../src/core/loginOrGoToAuthServer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loginOrGoToAuthServer.js","sourceRoot":"","sources":["../src/core/loginOrGoToAuthServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
export declare function notifyOtherTabsOfLogout(params: {
|
|
2
|
-
redirectUrl: string;
|
|
3
2
|
configId: string;
|
|
4
3
|
sessionId: string | undefined;
|
|
5
4
|
}): void;
|
|
6
5
|
export declare function getPrOtherTabLogout(params: {
|
|
7
6
|
sessionId: string | undefined;
|
|
8
7
|
configId: string;
|
|
9
|
-
homeUrl: string;
|
|
10
8
|
}): {
|
|
11
|
-
prOtherTabLogout: Promise<
|
|
12
|
-
redirectUrl: string;
|
|
13
|
-
}>;
|
|
9
|
+
prOtherTabLogout: Promise<void>;
|
|
14
10
|
};
|
|
@@ -12,16 +12,15 @@ function getChannelName(params) {
|
|
|
12
12
|
return "oidc-spa:logout-propagation:".concat(sessionIdOrConfigId);
|
|
13
13
|
}
|
|
14
14
|
function notifyOtherTabsOfLogout(params) {
|
|
15
|
-
var
|
|
15
|
+
var configId = params.configId, sessionId = params.sessionId;
|
|
16
16
|
var message = {
|
|
17
|
-
redirectUrl_initiator: redirectUrl,
|
|
18
17
|
configId: configId,
|
|
19
18
|
appInstanceId: globalContext.appInstanceId
|
|
20
19
|
};
|
|
21
20
|
new BroadcastChannel(getChannelName({ sessionIdOrConfigId: sessionId !== null && sessionId !== void 0 ? sessionId : configId })).postMessage(message);
|
|
22
21
|
}
|
|
23
22
|
function getPrOtherTabLogout(params) {
|
|
24
|
-
var sessionId = params.sessionId, configId = params.configId
|
|
23
|
+
var sessionId = params.sessionId, configId = params.configId;
|
|
25
24
|
var dOtherTabLogout = new Deferred_1.Deferred();
|
|
26
25
|
var channel = new BroadcastChannel(getChannelName({ sessionIdOrConfigId: sessionId !== null && sessionId !== void 0 ? sessionId : configId }));
|
|
27
26
|
channel.onmessage = function (_a) {
|
|
@@ -31,13 +30,7 @@ function getPrOtherTabLogout(params) {
|
|
|
31
30
|
return;
|
|
32
31
|
}
|
|
33
32
|
channel.close();
|
|
34
|
-
|
|
35
|
-
if (configId === message.configId) {
|
|
36
|
-
return message.redirectUrl_initiator;
|
|
37
|
-
}
|
|
38
|
-
return homeUrl;
|
|
39
|
-
})();
|
|
40
|
-
dOtherTabLogout.resolve({ redirectUrl: redirectUrl });
|
|
33
|
+
dOtherTabLogout.resolve();
|
|
41
34
|
};
|
|
42
35
|
var prOtherTabLogout = dOtherTabLogout.pr;
|
|
43
36
|
return { prOtherTabLogout: prOtherTabLogout };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logoutPropagationToOtherTabs.js","sourceRoot":"","sources":["../src/core/logoutPropagationToOtherTabs.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"logoutPropagationToOtherTabs.js","sourceRoot":"","sources":["../src/core/logoutPropagationToOtherTabs.ts"],"names":[],"mappings":";;AAiBA,0DAWC;AAED,kDAsBC;AApDD,kDAAsD;AACtD,8CAA6C;AAE7C,IAAM,aAAa,GAAG;IAClB,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACrD,CAAC;AAOF,SAAS,cAAc,CAAC,MAAuC;IACnD,IAAA,mBAAmB,GAAK,MAAM,oBAAX,CAAY;IACvC,OAAO,sCAA+B,mBAAmB,CAAE,CAAC;AAChE,CAAC;AAED,SAAgB,uBAAuB,CAAC,MAA2D;IACvF,IAAA,QAAQ,GAAgB,MAAM,SAAtB,EAAE,SAAS,GAAK,MAAM,UAAX,CAAY;IAEvC,IAAM,OAAO,GAAY;QACrB,QAAQ,UAAA;QACR,aAAa,EAAE,aAAa,CAAC,aAAa;KAC7C,CAAC;IAEF,IAAI,gBAAgB,CAAC,cAAc,CAAC,EAAE,mBAAmB,EAAE,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAC5F,OAAO,CACV,CAAC;AACN,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAA2D;IACnF,IAAA,SAAS,GAAe,MAAM,UAArB,EAAE,QAAQ,GAAK,MAAM,SAAX,CAAY;IAEvC,IAAM,eAAe,GAAG,IAAI,mBAAQ,EAAQ,CAAC;IAE7C,IAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,cAAc,CAAC,EAAE,mBAAmB,EAAE,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;IAErG,OAAO,CAAC,SAAS,GAAG,UAAC,EAAiB;YAAT,OAAO,UAAA;QAChC,IAAA,cAAM,EAAC,IAAA,UAAE,EAAU,OAAO,CAAC,CAAC,CAAC;QAE7B,IAAI,OAAO,CAAC,aAAa,KAAK,aAAa,CAAC,aAAa,EAAE,CAAC;YACxD,OAAO;QACX,CAAC;QAED,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,eAAe,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEF,IAAM,gBAAgB,GAAG,eAAe,CAAC,EAAE,CAAC;IAE5C,OAAO,EAAE,gBAAgB,kBAAA,EAAE,CAAC;AAChC,CAAC"}
|