@axa-fr/react-oidc 5.8.0-alpha0 → 5.9.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/README.md +33 -2
- package/dist/OidcProvider.d.ts +2 -0
- package/dist/OidcProvider.d.ts.map +1 -1
- package/dist/OidcProvider.js +5 -5
- package/dist/OidcProvider.js.map +1 -1
- package/dist/OidcSecure.d.ts +2 -1
- package/dist/OidcSecure.d.ts.map +1 -1
- package/dist/OidcSecure.js +5 -4
- package/dist/OidcSecure.js.map +1 -1
- package/dist/ReactOidc.d.ts +1 -2
- package/dist/ReactOidc.d.ts.map +1 -1
- package/dist/ReactOidc.js +4 -7
- package/dist/ReactOidc.js.map +1 -1
- package/dist/core/default-component/Callback.component.d.ts.map +1 -1
- package/dist/core/default-component/Callback.component.js +9 -11
- package/dist/core/default-component/Callback.component.js.map +1 -1
- package/dist/core/default-component/ServiceWorkerInstall.component.d.ts.map +1 -1
- package/dist/core/default-component/ServiceWorkerInstall.component.js +4 -7
- package/dist/core/default-component/ServiceWorkerInstall.component.js.map +1 -1
- package/dist/core/default-component/SilentCallback.component.d.ts.map +1 -1
- package/dist/core/default-component/SilentCallback.component.js +3 -5
- package/dist/core/default-component/SilentCallback.component.js.map +1 -1
- package/dist/core/routes/OidcRoutes.d.ts +2 -0
- package/dist/core/routes/OidcRoutes.d.ts.map +1 -1
- package/dist/core/routes/OidcRoutes.js +7 -5
- package/dist/core/routes/OidcRoutes.js.map +1 -1
- package/dist/core/routes/withRouter.d.ts +3 -2
- package/dist/core/routes/withRouter.d.ts.map +1 -1
- package/dist/core/routes/withRouter.js.map +1 -1
- package/dist/vanilla/initSession.js +9 -9
- package/dist/vanilla/initSession.js.map +1 -1
- package/dist/vanilla/oidc.d.ts +11 -5
- package/dist/vanilla/oidc.d.ts.map +1 -1
- package/dist/vanilla/oidc.js +194 -193
- package/dist/vanilla/oidc.js.map +1 -1
- package/dist/vanilla/timer.d.ts.map +1 -1
- package/dist/vanilla/timer.js +14 -6
- package/dist/vanilla/timer.js.map +1 -1
- package/package.json +2 -2
- package/src/App.tsx +14 -10
- package/src/Home.tsx +5 -3
- package/src/MultiAuth.tsx +1 -2
- package/src/index.tsx +1 -1
- package/src/oidc/OidcProvider.tsx +7 -2
- package/src/oidc/OidcSecure.tsx +9 -5
- package/src/oidc/ReactOidc.tsx +3 -6
- package/src/oidc/core/default-component/Callback.component.tsx +12 -15
- package/src/oidc/core/default-component/ServiceWorkerInstall.component.tsx +4 -7
- package/src/oidc/core/default-component/SilentCallback.component.tsx +3 -2
- package/src/oidc/core/routes/OidcRoutes.tsx +9 -4
- package/src/oidc/core/routes/withRouter.tsx +5 -1
- package/src/oidc/vanilla/initSession.ts +9 -9
- package/src/oidc/vanilla/oidc.ts +132 -109
- package/src/oidc/vanilla/timer.ts +15 -7
package/dist/vanilla/oidc.d.ts
CHANGED
|
@@ -2,6 +2,10 @@ import { AuthorizationServiceConfiguration } from '@openid/appauth';
|
|
|
2
2
|
export interface StringMap {
|
|
3
3
|
[key: string]: string;
|
|
4
4
|
}
|
|
5
|
+
export interface loginCallbackResult {
|
|
6
|
+
state: string;
|
|
7
|
+
callbackPath: string;
|
|
8
|
+
}
|
|
5
9
|
export interface AuthorityConfiguration {
|
|
6
10
|
authorization_endpoint: string;
|
|
7
11
|
token_endpoint: string;
|
|
@@ -23,6 +27,7 @@ export declare type OidcConfiguration = {
|
|
|
23
27
|
extras?: StringMap;
|
|
24
28
|
token_request_extras?: StringMap;
|
|
25
29
|
};
|
|
30
|
+
export declare const getLoginParams: (configurationName: any) => any;
|
|
26
31
|
export declare class Oidc {
|
|
27
32
|
configuration: OidcConfiguration;
|
|
28
33
|
userInfo: null;
|
|
@@ -64,12 +69,13 @@ export declare class Oidc {
|
|
|
64
69
|
silentSigninCallbackFromIFrame(): void;
|
|
65
70
|
silentSigninAsync(): Promise<any>;
|
|
66
71
|
initAsync(authority: string, authorityConfiguration: AuthorityConfiguration): Promise<AuthorizationServiceConfiguration>;
|
|
67
|
-
|
|
68
|
-
|
|
72
|
+
tryKeepExistingSessionPromise: any;
|
|
73
|
+
tryKeepExistingSessionAsync(): Promise<any>;
|
|
74
|
+
loginAsync(callbackPath?: string, extras?: StringMap, installServiceWorker?: boolean, state?: string): Promise<void>;
|
|
69
75
|
loginCallbackAsync(): Promise<unknown>;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
loginCallbackWithAutoTokensRenewAsync(): Promise<
|
|
76
|
+
refreshTokensAsync(refreshToken: any, silentEvent?: boolean): Promise<any>;
|
|
77
|
+
loginCallbackWithAutoTokensRenewPromise: Promise<loginCallbackResult>;
|
|
78
|
+
loginCallbackWithAutoTokensRenewAsync(): Promise<loginCallbackResult>;
|
|
73
79
|
userInfoAsync(): Promise<any>;
|
|
74
80
|
destroyAsync(): Promise<void>;
|
|
75
81
|
logoutAsync(callbackPath?: string | undefined, extras?: StringMap): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidc.d.ts","sourceRoot":"","sources":["../../src/oidc/vanilla/oidc.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,iCAAiC,EAQpC,MAAM,iBAAiB,CAAC;AA8CzB,MAAM,WAAW,SAAS;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACnC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAGA,oBAAY,iBAAiB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAC,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IACjB,uBAAuB,CAAC,EAAE,sBAAsB,CAAC;IAClD,+CAA+C,CAAC,EAAE,MAAM,CAAC;IACzD,2BAA2B,CAAC,EAAC,MAAM,CAAC;IACnC,mBAAmB,CAAC,EAAC,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAC,SAAS,CAAA;IACjB,oBAAoB,CAAC,EAAC,SAAS,CAAC;CACpC,CAAC;
|
|
1
|
+
{"version":3,"file":"oidc.d.ts","sourceRoot":"","sources":["../../src/oidc/vanilla/oidc.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,iCAAiC,EAQpC,MAAM,iBAAiB,CAAC;AA8CzB,MAAM,WAAW,SAAS;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACnC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAGA,oBAAY,iBAAiB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAC,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IACjB,uBAAuB,CAAC,EAAE,sBAAsB,CAAC;IAClD,+CAA+C,CAAC,EAAE,MAAM,CAAC;IACzD,2BAA2B,CAAC,EAAC,MAAM,CAAC;IACnC,mBAAmB,CAAC,EAAC,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAC,SAAS,CAAA;IACjB,oBAAoB,CAAC,EAAC,SAAS,CAAC;CACpC,CAAC;AA8CF,eAAO,MAAM,cAAc,iCAE1B,CAAA;AA6ED,qBAAa,IAAI;IACN,aAAa,EAAE,iBAAiB,CAAC;IACjC,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,aAAa,CAAC,CAAM;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,OAAO,CAAC,CAAM;gBACV,aAAa,EAAC,iBAAiB,EAAE,iBAAiB,SAAU;IAmBxE,eAAe,CAAC,IAAI,KAAA;IAMpB,uBAAuB,CAAC,EAAE,KAAA;IAK1B,YAAY,CAAC,SAAS,KAAA,EAAE,IAAI,KAAA;IAK5B,MAAM,CAAC,WAAW,CAAC,aAAa,KAAA,EAAE,IAAI,SAAU;IAGhD,MAAM,CAAC,GAAG,CAAC,IAAI,SAAU;IAQzB,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;MAAc;IAE/B,8BAA8B;IAKxB,iBAAiB;IA8CjB,SAAS,CAAC,SAAS,EAAC,MAAM,EAAE,sBAAsB,EAAC,sBAAsB;IAY/E,6BAA6B,MAAQ;IAC/B,2BAA2B;IA+E3B,UAAU,CAAC,YAAY,GAAC,MAAgB,EAAE,MAAM,GAAC,SAAc,EAAE,oBAAoB,UAAK,EAAE,KAAK,GAAC,MAAgB;IAgDlH,kBAAkB;IAoFlB,kBAAkB,CAAC,YAAY,KAAA,EAAE,WAAW,UAAQ;IAwD1D,uCAAuC,EAAC,OAAO,CAAC,mBAAmB,CAAC,CAAQ;IAC3E,qCAAqC,IAAG,OAAO,CAAC,mBAAmB,CAAC;IAWpE,aAAa;IAIP,YAAY;IAab,WAAW,CAAC,YAAY,GAAE,MAAM,GAAG,SAAqB,EAAE,MAAM,GAAC,SAAc;CA0BtF;AAGD,eAAe,IAAI,CAAC"}
|
package/dist/vanilla/oidc.js
CHANGED
|
@@ -50,7 +50,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
50
50
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
51
|
};
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
-
exports.Oidc = void 0;
|
|
53
|
+
exports.Oidc = exports.getLoginParams = void 0;
|
|
54
54
|
var appauth_1 = require("@openid/appauth");
|
|
55
55
|
var noHashQueryStringUtils_1 = require("./noHashQueryStringUtils");
|
|
56
56
|
var initWorker_1 = require("./initWorker");
|
|
@@ -82,7 +82,7 @@ var extractAccessTokenPayload = function (tokens) {
|
|
|
82
82
|
}
|
|
83
83
|
var accessToken = tokens.accessToken;
|
|
84
84
|
try {
|
|
85
|
-
if (!accessToken || countLetter(accessToken, '.')
|
|
85
|
+
if (!accessToken || countLetter(accessToken, '.') != 2) {
|
|
86
86
|
return null;
|
|
87
87
|
}
|
|
88
88
|
return JSON.parse(atob(accessToken.split('.')[1]));
|
|
@@ -125,74 +125,62 @@ var loginCallbackWithAutoTokensRenewAsync = function (oidc) { return __awaiter(v
|
|
|
125
125
|
return [4 /*yield*/, autoRenewTokensAsync(oidc, tokens.refreshToken, oidc.tokens.expiresAt)];
|
|
126
126
|
case 5:
|
|
127
127
|
_b.timeoutId = _c.sent();
|
|
128
|
-
return [2 /*return*/, response.state];
|
|
128
|
+
return [2 /*return*/, { state: response.state, callbackPath: response.callbackPath }];
|
|
129
129
|
}
|
|
130
130
|
});
|
|
131
131
|
}); };
|
|
132
|
-
var renewTokenAsync = function (oidc, refreshToken, extras) {
|
|
133
|
-
if (extras === void 0) { extras = null; }
|
|
134
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
135
|
-
var tokens, _a;
|
|
136
|
-
return __generator(this, function (_b) {
|
|
137
|
-
switch (_b.label) {
|
|
138
|
-
case 0: return [4 /*yield*/, oidc.refreshTokensAsync(refreshToken, false, extras)];
|
|
139
|
-
case 1:
|
|
140
|
-
tokens = _b.sent();
|
|
141
|
-
_a = oidc;
|
|
142
|
-
return [4 /*yield*/, setTokensAsync(oidc.serviceWorker, tokens)];
|
|
143
|
-
case 2:
|
|
144
|
-
_a.tokens = _b.sent();
|
|
145
|
-
if (!!oidc.serviceWorker) return [3 /*break*/, 4];
|
|
146
|
-
return [4 /*yield*/, oidc.session.setTokens(oidc.tokens)];
|
|
147
|
-
case 3:
|
|
148
|
-
_b.sent();
|
|
149
|
-
_b.label = 4;
|
|
150
|
-
case 4:
|
|
151
|
-
if (!oidc.tokens) {
|
|
152
|
-
return [2 /*return*/, null];
|
|
153
|
-
}
|
|
154
|
-
oidc.publishEvent(Oidc.eventNames.token_renewed, oidc.tokens);
|
|
155
|
-
return [2 /*return*/, oidc.tokens];
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
|
-
};
|
|
160
132
|
var autoRenewTokensAsync = function (oidc, refreshToken, expiresAt) { return __awaiter(void 0, void 0, void 0, function () {
|
|
161
133
|
var refreshTimeBeforeTokensExpirationInSecond;
|
|
162
134
|
var _a;
|
|
163
135
|
return __generator(this, function (_b) {
|
|
164
136
|
refreshTimeBeforeTokensExpirationInSecond = (_a = oidc.configuration.refresh_time_before_tokens_expiration_in_second) !== null && _a !== void 0 ? _a : 60;
|
|
165
137
|
return [2 /*return*/, timer_1.default.setTimeout(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
166
|
-
var currentTimeUnixSecond, timeInfo, tokens, _a, _b;
|
|
167
|
-
return __generator(this, function (
|
|
168
|
-
switch (
|
|
138
|
+
var currentTimeUnixSecond, timeInfo, tokens, _a, _b, _c;
|
|
139
|
+
return __generator(this, function (_d) {
|
|
140
|
+
switch (_d.label) {
|
|
169
141
|
case 0:
|
|
170
142
|
currentTimeUnixSecond = new Date().getTime() / 1000;
|
|
171
143
|
timeInfo = { timeLeft: ((expiresAt - refreshTimeBeforeTokensExpirationInSecond) - currentTimeUnixSecond) };
|
|
172
144
|
oidc.publishEvent(Oidc.eventNames.token_timer, timeInfo);
|
|
173
|
-
if (!(currentTimeUnixSecond > (expiresAt - refreshTimeBeforeTokensExpirationInSecond))) return [3 /*break*/,
|
|
174
|
-
return [4 /*yield*/,
|
|
145
|
+
if (!(currentTimeUnixSecond > (expiresAt - refreshTimeBeforeTokensExpirationInSecond))) return [3 /*break*/, 6];
|
|
146
|
+
return [4 /*yield*/, oidc.refreshTokensAsync(refreshToken)];
|
|
175
147
|
case 1:
|
|
176
|
-
tokens =
|
|
177
|
-
if (!tokens) return [3 /*break*/, 3];
|
|
148
|
+
tokens = _d.sent();
|
|
178
149
|
_a = oidc;
|
|
179
|
-
return [4 /*yield*/,
|
|
150
|
+
return [4 /*yield*/, setTokensAsync(oidc.serviceWorker, tokens)];
|
|
180
151
|
case 2:
|
|
181
|
-
_a.
|
|
182
|
-
|
|
183
|
-
|
|
152
|
+
_a.tokens = _d.sent();
|
|
153
|
+
if (!!oidc.serviceWorker) return [3 /*break*/, 4];
|
|
154
|
+
return [4 /*yield*/, oidc.session.setTokens(oidc.tokens)];
|
|
155
|
+
case 3:
|
|
156
|
+
_d.sent();
|
|
157
|
+
_d.label = 4;
|
|
184
158
|
case 4:
|
|
159
|
+
if (!oidc.tokens) {
|
|
160
|
+
return [2 /*return*/];
|
|
161
|
+
}
|
|
162
|
+
oidc.publishEvent(Oidc.eventNames.token_renewed, oidc.tokens);
|
|
185
163
|
_b = oidc;
|
|
186
|
-
return [4 /*yield*/, autoRenewTokensAsync(oidc, refreshToken, expiresAt)];
|
|
164
|
+
return [4 /*yield*/, autoRenewTokensAsync(oidc, tokens.refreshToken, oidc.tokens.expiresAt)];
|
|
187
165
|
case 5:
|
|
188
|
-
_b.timeoutId =
|
|
189
|
-
|
|
190
|
-
case 6:
|
|
166
|
+
_b.timeoutId = _d.sent();
|
|
167
|
+
return [3 /*break*/, 8];
|
|
168
|
+
case 6:
|
|
169
|
+
_c = oidc;
|
|
170
|
+
return [4 /*yield*/, autoRenewTokensAsync(oidc, refreshToken, expiresAt)];
|
|
171
|
+
case 7:
|
|
172
|
+
_c.timeoutId = _d.sent();
|
|
173
|
+
_d.label = 8;
|
|
174
|
+
case 8: return [2 /*return*/];
|
|
191
175
|
}
|
|
192
176
|
});
|
|
193
177
|
}); }, 1000)];
|
|
194
178
|
});
|
|
195
179
|
}); };
|
|
180
|
+
var getLoginParams = function (configurationName) {
|
|
181
|
+
return JSON.parse(sessionStorage["oidc_login.".concat(configurationName)]);
|
|
182
|
+
};
|
|
183
|
+
exports.getLoginParams = getLoginParams;
|
|
196
184
|
var userInfoAsync = function (oidc) { return __awaiter(void 0, void 0, void 0, function () {
|
|
197
185
|
var accessToken, oidcServerConfiguration, url, fetchUserInfo, userInfo;
|
|
198
186
|
return __generator(this, function (_a) {
|
|
@@ -291,6 +279,8 @@ var getRandomInt = function (max) {
|
|
|
291
279
|
var Oidc = /** @class */ (function () {
|
|
292
280
|
function Oidc(configuration, configurationName) {
|
|
293
281
|
if (configurationName === void 0) { configurationName = "default"; }
|
|
282
|
+
this.tryKeepExistingSessionPromise = null;
|
|
283
|
+
this.loginCallbackWithAutoTokensRenewPromise = null;
|
|
294
284
|
this.configuration = configuration;
|
|
295
285
|
this.configurationName = configurationName;
|
|
296
286
|
this.tokens = null;
|
|
@@ -314,7 +304,7 @@ var Oidc = /** @class */ (function () {
|
|
|
314
304
|
return id;
|
|
315
305
|
};
|
|
316
306
|
Oidc.prototype.removeEventSubscription = function (id) {
|
|
317
|
-
var newEvents = this.events.filter(function (e) { return e.id
|
|
307
|
+
var newEvents = this.events.filter(function (e) { return e.id !== id; });
|
|
318
308
|
this.events = newEvents;
|
|
319
309
|
};
|
|
320
310
|
Oidc.prototype.publishEvent = function (eventName, data) {
|
|
@@ -328,7 +318,8 @@ var Oidc = /** @class */ (function () {
|
|
|
328
318
|
};
|
|
329
319
|
Oidc.get = function (name) {
|
|
330
320
|
if (name === void 0) { name = "default"; }
|
|
331
|
-
|
|
321
|
+
var insideBrowser = (typeof process === 'undefined');
|
|
322
|
+
if (!oidcDatabase.hasOwnProperty(name) && insideBrowser) {
|
|
332
323
|
throw Error("Oidc library does seem initialized.\nPlease checkout that you are using OIDC hook inside a <OidcProvider configurationName=\"".concat(name, "\"></OidcProvider> compoment."));
|
|
333
324
|
}
|
|
334
325
|
return oidcDatabase[name];
|
|
@@ -411,118 +402,145 @@ var Oidc = /** @class */ (function () {
|
|
|
411
402
|
};
|
|
412
403
|
Oidc.prototype.tryKeepExistingSessionAsync = function () {
|
|
413
404
|
return __awaiter(this, void 0, void 0, function () {
|
|
414
|
-
var
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
return [2 /*return*/, false];
|
|
420
|
-
}
|
|
421
|
-
this.publishEvent(eventNames.tryKeepExistingSessionAsync_begin, {});
|
|
422
|
-
_e.label = 1;
|
|
423
|
-
case 1:
|
|
424
|
-
_e.trys.push([1, 15, , 18]);
|
|
425
|
-
configuration = this.configuration;
|
|
426
|
-
return [4 /*yield*/, this.initAsync(configuration.authority, configuration.authority_configuration)];
|
|
427
|
-
case 2:
|
|
428
|
-
oidcServerConfiguration = _e.sent();
|
|
429
|
-
return [4 /*yield*/, (0, initWorker_1.initWorkerAsync)(configuration.service_worker_relative_url, this.configurationName)];
|
|
430
|
-
case 3:
|
|
431
|
-
serviceWorker = _e.sent();
|
|
432
|
-
if (!serviceWorker) return [3 /*break*/, 9];
|
|
433
|
-
return [4 /*yield*/, serviceWorker.initAsync(oidcServerConfiguration, "tryKeepExistingSessionAsync")];
|
|
434
|
-
case 4:
|
|
435
|
-
tokens = (_e.sent()).tokens;
|
|
436
|
-
if (!tokens) return [3 /*break*/, 8];
|
|
437
|
-
serviceWorker.startKeepAliveServiceWorker();
|
|
438
|
-
return [4 /*yield*/, this.refreshTokensAsync(tokens.refresh_token, true)];
|
|
439
|
-
case 5:
|
|
440
|
-
updatedTokens = _e.sent();
|
|
441
|
-
// @ts-ignore
|
|
442
|
-
_a = this;
|
|
443
|
-
return [4 /*yield*/, setTokensAsync(serviceWorker, updatedTokens)];
|
|
444
|
-
case 6:
|
|
445
|
-
// @ts-ignore
|
|
446
|
-
_a.tokens = _e.sent();
|
|
447
|
-
this.serviceWorker = serviceWorker;
|
|
448
|
-
// @ts-ignore
|
|
449
|
-
_b = this;
|
|
450
|
-
return [4 /*yield*/, autoRenewTokensAsync(this, updatedTokens.refreshToken, this.tokens.expiresAt)];
|
|
451
|
-
case 7:
|
|
452
|
-
// @ts-ignore
|
|
453
|
-
_b.timeoutId = _e.sent();
|
|
454
|
-
this.publishEvent(eventNames.tryKeepExistingSessionAsync_end, { success: true, message: "tokens inside ServiceWorker are valid" });
|
|
455
|
-
return [2 /*return*/, true];
|
|
456
|
-
case 8:
|
|
457
|
-
this.publishEvent(eventNames.tryKeepExistingSessionAsync_end, { success: false, message: "no exiting session found" });
|
|
458
|
-
return [3 /*break*/, 14];
|
|
459
|
-
case 9:
|
|
460
|
-
if (configuration.service_worker_relative_url) {
|
|
461
|
-
this.publishEvent(eventNames.service_worker_not_supported_by_browser, {
|
|
462
|
-
message: "service worker is not supported by this browser"
|
|
463
|
-
});
|
|
464
|
-
}
|
|
465
|
-
session = (0, initSession_1.initSession)(this.configurationName);
|
|
466
|
-
return [4 /*yield*/, session.initAsync()];
|
|
467
|
-
case 10:
|
|
468
|
-
tokens = (_e.sent()).tokens;
|
|
469
|
-
if (!tokens) return [3 /*break*/, 14];
|
|
470
|
-
return [4 /*yield*/, this.refreshTokensAsync(tokens.refreshToken, true)];
|
|
471
|
-
case 11:
|
|
472
|
-
updatedTokens = _e.sent();
|
|
473
|
-
// @ts-ignore
|
|
474
|
-
_c = this;
|
|
475
|
-
return [4 /*yield*/, setTokensAsync(serviceWorker, updatedTokens)];
|
|
476
|
-
case 12:
|
|
477
|
-
// @ts-ignore
|
|
478
|
-
_c.tokens = _e.sent();
|
|
479
|
-
session.setTokens(this.tokens);
|
|
480
|
-
this.session = session;
|
|
481
|
-
// @ts-ignore
|
|
482
|
-
_d = this;
|
|
483
|
-
return [4 /*yield*/, autoRenewTokensAsync(this, updatedTokens.refreshToken, this.tokens.expiresAt)];
|
|
484
|
-
case 13:
|
|
485
|
-
// @ts-ignore
|
|
486
|
-
_d.timeoutId = _e.sent();
|
|
487
|
-
this.publishEvent(eventNames.tryKeepExistingSessionAsync_end, { success: true, message: "tokens inside ServiceWorker are valid" });
|
|
488
|
-
return [2 /*return*/, true];
|
|
489
|
-
case 14:
|
|
490
|
-
this.publishEvent(eventNames.tryKeepExistingSessionAsync_end, { success: false, message: "no service worker" });
|
|
491
|
-
return [2 /*return*/, false];
|
|
492
|
-
case 15:
|
|
493
|
-
exception_1 = _e.sent();
|
|
494
|
-
if (!serviceWorker) return [3 /*break*/, 17];
|
|
495
|
-
return [4 /*yield*/, serviceWorker.clearAsync()];
|
|
496
|
-
case 16:
|
|
497
|
-
_e.sent();
|
|
498
|
-
_e.label = 17;
|
|
499
|
-
case 17:
|
|
500
|
-
this.publishEvent(eventNames.tryKeepExistingSessionAsync_error, "tokens inside ServiceWorker are invalid");
|
|
501
|
-
return [2 /*return*/, false];
|
|
502
|
-
case 18: return [2 /*return*/];
|
|
405
|
+
var funcAsync;
|
|
406
|
+
var _this = this;
|
|
407
|
+
return __generator(this, function (_a) {
|
|
408
|
+
if (this.tryKeepExistingSessionPromise !== null) {
|
|
409
|
+
return [2 /*return*/, this.tryKeepExistingSessionPromise];
|
|
503
410
|
}
|
|
411
|
+
funcAsync = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
412
|
+
var serviceWorker, configuration, oidcServerConfiguration, tokens, updatedTokens, _a, _b, session, tokens, updatedTokens, _c, _d, exception_1;
|
|
413
|
+
return __generator(this, function (_e) {
|
|
414
|
+
switch (_e.label) {
|
|
415
|
+
case 0:
|
|
416
|
+
if (this.tokens != null) {
|
|
417
|
+
return [2 /*return*/, false];
|
|
418
|
+
}
|
|
419
|
+
this.publishEvent(eventNames.tryKeepExistingSessionAsync_begin, {});
|
|
420
|
+
_e.label = 1;
|
|
421
|
+
case 1:
|
|
422
|
+
_e.trys.push([1, 15, , 18]);
|
|
423
|
+
configuration = this.configuration;
|
|
424
|
+
return [4 /*yield*/, this.initAsync(configuration.authority, configuration.authority_configuration)];
|
|
425
|
+
case 2:
|
|
426
|
+
oidcServerConfiguration = _e.sent();
|
|
427
|
+
return [4 /*yield*/, (0, initWorker_1.initWorkerAsync)(configuration.service_worker_relative_url, this.configurationName)];
|
|
428
|
+
case 3:
|
|
429
|
+
serviceWorker = _e.sent();
|
|
430
|
+
if (!serviceWorker) return [3 /*break*/, 9];
|
|
431
|
+
return [4 /*yield*/, serviceWorker.initAsync(oidcServerConfiguration, "tryKeepExistingSessionAsync")];
|
|
432
|
+
case 4:
|
|
433
|
+
tokens = (_e.sent()).tokens;
|
|
434
|
+
if (!tokens) return [3 /*break*/, 8];
|
|
435
|
+
serviceWorker.startKeepAliveServiceWorker();
|
|
436
|
+
return [4 /*yield*/, this.refreshTokensAsync(tokens.refresh_token, true)];
|
|
437
|
+
case 5:
|
|
438
|
+
updatedTokens = _e.sent();
|
|
439
|
+
// @ts-ignore
|
|
440
|
+
_a = this;
|
|
441
|
+
return [4 /*yield*/, setTokensAsync(serviceWorker, updatedTokens)];
|
|
442
|
+
case 6:
|
|
443
|
+
// @ts-ignore
|
|
444
|
+
_a.tokens = _e.sent();
|
|
445
|
+
this.serviceWorker = serviceWorker;
|
|
446
|
+
// @ts-ignore
|
|
447
|
+
_b = this;
|
|
448
|
+
return [4 /*yield*/, autoRenewTokensAsync(this, updatedTokens.refreshToken, this.tokens.expiresAt)];
|
|
449
|
+
case 7:
|
|
450
|
+
// @ts-ignore
|
|
451
|
+
_b.timeoutId = _e.sent();
|
|
452
|
+
this.publishEvent(eventNames.tryKeepExistingSessionAsync_end, {
|
|
453
|
+
success: true,
|
|
454
|
+
message: "tokens inside ServiceWorker are valid"
|
|
455
|
+
});
|
|
456
|
+
return [2 /*return*/, true];
|
|
457
|
+
case 8:
|
|
458
|
+
this.publishEvent(eventNames.tryKeepExistingSessionAsync_end, {
|
|
459
|
+
success: false,
|
|
460
|
+
message: "no exiting session found"
|
|
461
|
+
});
|
|
462
|
+
return [3 /*break*/, 14];
|
|
463
|
+
case 9:
|
|
464
|
+
if (configuration.service_worker_relative_url) {
|
|
465
|
+
this.publishEvent(eventNames.service_worker_not_supported_by_browser, {
|
|
466
|
+
message: "service worker is not supported by this browser"
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
session = (0, initSession_1.initSession)(this.configurationName);
|
|
470
|
+
return [4 /*yield*/, session.initAsync()];
|
|
471
|
+
case 10:
|
|
472
|
+
tokens = (_e.sent()).tokens;
|
|
473
|
+
if (!tokens) return [3 /*break*/, 14];
|
|
474
|
+
return [4 /*yield*/, this.refreshTokensAsync(tokens.refreshToken, true)];
|
|
475
|
+
case 11:
|
|
476
|
+
updatedTokens = _e.sent();
|
|
477
|
+
// @ts-ignore
|
|
478
|
+
_c = this;
|
|
479
|
+
return [4 /*yield*/, setTokensAsync(serviceWorker, updatedTokens)];
|
|
480
|
+
case 12:
|
|
481
|
+
// @ts-ignore
|
|
482
|
+
_c.tokens = _e.sent();
|
|
483
|
+
session.setTokens(this.tokens);
|
|
484
|
+
this.session = session;
|
|
485
|
+
// @ts-ignore
|
|
486
|
+
_d = this;
|
|
487
|
+
return [4 /*yield*/, autoRenewTokensAsync(this, updatedTokens.refreshToken, this.tokens.expiresAt)];
|
|
488
|
+
case 13:
|
|
489
|
+
// @ts-ignore
|
|
490
|
+
_d.timeoutId = _e.sent();
|
|
491
|
+
this.publishEvent(eventNames.tryKeepExistingSessionAsync_end, {
|
|
492
|
+
success: true,
|
|
493
|
+
message: "tokens inside ServiceWorker are valid"
|
|
494
|
+
});
|
|
495
|
+
return [2 /*return*/, true];
|
|
496
|
+
case 14:
|
|
497
|
+
this.publishEvent(eventNames.tryKeepExistingSessionAsync_end, {
|
|
498
|
+
success: false,
|
|
499
|
+
message: "no service worker"
|
|
500
|
+
});
|
|
501
|
+
return [2 /*return*/, false];
|
|
502
|
+
case 15:
|
|
503
|
+
exception_1 = _e.sent();
|
|
504
|
+
if (!serviceWorker) return [3 /*break*/, 17];
|
|
505
|
+
return [4 /*yield*/, serviceWorker.clearAsync()];
|
|
506
|
+
case 16:
|
|
507
|
+
_e.sent();
|
|
508
|
+
_e.label = 17;
|
|
509
|
+
case 17:
|
|
510
|
+
this.publishEvent(eventNames.tryKeepExistingSessionAsync_error, "tokens inside ServiceWorker are invalid");
|
|
511
|
+
return [2 /*return*/, false];
|
|
512
|
+
case 18: return [2 /*return*/];
|
|
513
|
+
}
|
|
514
|
+
});
|
|
515
|
+
}); };
|
|
516
|
+
this.tryKeepExistingSessionPromise = funcAsync();
|
|
517
|
+
return [2 /*return*/, this.tryKeepExistingSessionPromise.then(function (result) {
|
|
518
|
+
_this.tryKeepExistingSessionPromise = null;
|
|
519
|
+
return result;
|
|
520
|
+
})];
|
|
504
521
|
});
|
|
505
522
|
});
|
|
506
523
|
};
|
|
507
|
-
Oidc.prototype.loginAsync = function (callbackPath, extras, installServiceWorker) {
|
|
524
|
+
Oidc.prototype.loginAsync = function (callbackPath, extras, installServiceWorker, state) {
|
|
508
525
|
if (callbackPath === void 0) { callbackPath = undefined; }
|
|
509
526
|
if (extras === void 0) { extras = null; }
|
|
510
527
|
if (installServiceWorker === void 0) { installServiceWorker = true; }
|
|
528
|
+
if (state === void 0) { state = undefined; }
|
|
511
529
|
return __awaiter(this, void 0, void 0, function () {
|
|
512
|
-
var location_1, url,
|
|
530
|
+
var location_1, url, configuration, serviceWorker, oidcServerConfiguration, isServiceWorkerProxyActive, storage, session, authorizationHandler, authRequest, exception_2;
|
|
513
531
|
return __generator(this, function (_a) {
|
|
514
532
|
switch (_a.label) {
|
|
515
533
|
case 0:
|
|
516
534
|
_a.trys.push([0, 8, , 9]);
|
|
517
535
|
location_1 = window.location;
|
|
518
536
|
url = callbackPath || location_1.pathname + (location_1.search || '') + (location_1.hash || '');
|
|
519
|
-
state = url;
|
|
520
537
|
this.publishEvent(eventNames.loginAsync_begin, {});
|
|
521
538
|
configuration = this.configuration;
|
|
522
539
|
// Security we cannot loggin from Iframe
|
|
523
540
|
if (!configuration.silent_redirect_uri && isInIframe()) {
|
|
524
541
|
throw new Error("Login from iframe is forbidden");
|
|
525
542
|
}
|
|
543
|
+
sessionStorage["oidc_login.".concat(this.configurationName)] = JSON.stringify({ callbackPath: url, extras: extras, state: state });
|
|
526
544
|
return [4 /*yield*/, (0, initWorker_1.initWorkerAsync)(configuration.service_worker_relative_url, this.configurationName)];
|
|
527
545
|
case 1:
|
|
528
546
|
serviceWorker = _a.sent();
|
|
@@ -534,7 +552,7 @@ var Oidc = /** @class */ (function () {
|
|
|
534
552
|
case 3:
|
|
535
553
|
isServiceWorkerProxyActive = _a.sent();
|
|
536
554
|
if (!isServiceWorkerProxyActive) {
|
|
537
|
-
window.location.href = configuration.redirect_uri
|
|
555
|
+
window.location.href = "".concat(configuration.redirect_uri, "/service-worker-install");
|
|
538
556
|
return [2 /*return*/];
|
|
539
557
|
}
|
|
540
558
|
_a.label = 4;
|
|
@@ -619,7 +637,7 @@ var Oidc = /** @class */ (function () {
|
|
|
619
637
|
var notifier = new appauth_1.AuthorizationNotifier();
|
|
620
638
|
authorizationHandler.setAuthorizationNotifier(notifier);
|
|
621
639
|
notifier.setAuthorizationListener(function (request, response, error) { return __awaiter(_this, void 0, void 0, function () {
|
|
622
|
-
var extras, _i, _a, _b, key, value, tokenRequest, tokenResponse, exception_4;
|
|
640
|
+
var extras, _i, _a, _b, key, value, tokenRequest, tokenResponse, loginParams, exception_4;
|
|
623
641
|
return __generator(this, function (_c) {
|
|
624
642
|
switch (_c.label) {
|
|
625
643
|
case 0:
|
|
@@ -627,6 +645,7 @@ var Oidc = /** @class */ (function () {
|
|
|
627
645
|
reject(error);
|
|
628
646
|
}
|
|
629
647
|
if (!response) {
|
|
648
|
+
reject("no response");
|
|
630
649
|
return [2 /*return*/];
|
|
631
650
|
}
|
|
632
651
|
extras = null;
|
|
@@ -654,7 +673,12 @@ var Oidc = /** @class */ (function () {
|
|
|
654
673
|
return [4 /*yield*/, tokenHandler.performTokenRequest(oidcServerConfiguration_1, tokenRequest)];
|
|
655
674
|
case 2:
|
|
656
675
|
tokenResponse = _c.sent();
|
|
657
|
-
|
|
676
|
+
loginParams = (0, exports.getLoginParams)(this.configurationName);
|
|
677
|
+
resolve({
|
|
678
|
+
tokens: tokenResponse,
|
|
679
|
+
state: request.state,
|
|
680
|
+
callbackPath: loginParams.callbackPath,
|
|
681
|
+
});
|
|
658
682
|
this.publishEvent(eventNames.loginCallbackAsync_end, {});
|
|
659
683
|
return [3 /*break*/, 4];
|
|
660
684
|
case 3:
|
|
@@ -680,36 +704,13 @@ var Oidc = /** @class */ (function () {
|
|
|
680
704
|
});
|
|
681
705
|
});
|
|
682
706
|
};
|
|
683
|
-
Oidc.prototype.
|
|
684
|
-
if (extras === void 0) { extras = null; }
|
|
685
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
686
|
-
var tokens;
|
|
687
|
-
return __generator(this, function (_a) {
|
|
688
|
-
switch (_a.label) {
|
|
689
|
-
case 0:
|
|
690
|
-
if (!(this.tokens && this.tokens.refreshToken && this.timeoutId)) return [3 /*break*/, 3];
|
|
691
|
-
// @ts-ignore
|
|
692
|
-
timer_1.default.clearTimeout(this.timeoutId);
|
|
693
|
-
return [4 /*yield*/, renewTokenAsync(this, this.tokens.refreshToken, extras)];
|
|
694
|
-
case 1:
|
|
695
|
-
tokens = _a.sent();
|
|
696
|
-
return [4 /*yield*/, autoRenewTokensAsync(this, tokens.refreshToken, tokens.expiresAt)];
|
|
697
|
-
case 2:
|
|
698
|
-
_a.sent();
|
|
699
|
-
_a.label = 3;
|
|
700
|
-
case 3: return [2 /*return*/];
|
|
701
|
-
}
|
|
702
|
-
});
|
|
703
|
-
});
|
|
704
|
-
};
|
|
705
|
-
Oidc.prototype.refreshTokensAsync = function (refreshToken, silentEvent, extras) {
|
|
707
|
+
Oidc.prototype.refreshTokensAsync = function (refreshToken, silentEvent) {
|
|
706
708
|
if (silentEvent === void 0) { silentEvent = false; }
|
|
707
|
-
if (extras === void 0) { extras = null; }
|
|
708
709
|
return __awaiter(this, void 0, void 0, function () {
|
|
709
|
-
var localSilentSigninAsync, configuration, clientId, redirectUri, authority, tokenHandler,
|
|
710
|
+
var localSilentSigninAsync, configuration, clientId, redirectUri, authority, tokenHandler, extras, _i, _a, _b, key, value, request, oidcServerConfiguration, token_response, exception_5;
|
|
710
711
|
var _this = this;
|
|
711
|
-
return __generator(this, function (
|
|
712
|
-
switch (
|
|
712
|
+
return __generator(this, function (_c) {
|
|
713
|
+
switch (_c.label) {
|
|
713
714
|
case 0:
|
|
714
715
|
localSilentSigninAsync = function (exception) {
|
|
715
716
|
if (exception === void 0) { exception = null; }
|
|
@@ -737,9 +738,9 @@ var Oidc = /** @class */ (function () {
|
|
|
737
738
|
});
|
|
738
739
|
});
|
|
739
740
|
};
|
|
740
|
-
|
|
741
|
+
_c.label = 1;
|
|
741
742
|
case 1:
|
|
742
|
-
|
|
743
|
+
_c.trys.push([1, 6, , 8]);
|
|
743
744
|
this.publishEvent(silentEvent ? eventNames.refreshTokensAsync_silent_begin : eventNames.refreshTokensAsync_begin, {});
|
|
744
745
|
configuration = this.configuration;
|
|
745
746
|
clientId = configuration.client_id;
|
|
@@ -747,22 +748,15 @@ var Oidc = /** @class */ (function () {
|
|
|
747
748
|
authority = configuration.authority;
|
|
748
749
|
if (!!configuration.scope.split(" ").find(function (s) { return s === refresh_token_scope; })) return [3 /*break*/, 3];
|
|
749
750
|
return [4 /*yield*/, localSilentSigninAsync()];
|
|
750
|
-
case 2: return [2 /*return*/,
|
|
751
|
+
case 2: return [2 /*return*/, _c.sent()];
|
|
751
752
|
case 3:
|
|
752
753
|
tokenHandler = new appauth_1.BaseTokenRequestHandler(new appauth_1.FetchRequestor());
|
|
753
|
-
|
|
754
|
-
if (
|
|
755
|
-
|
|
756
|
-
for (_i = 0, _a = Object.entries(
|
|
754
|
+
extras = undefined;
|
|
755
|
+
if (configuration.token_request_extras) {
|
|
756
|
+
extras = {};
|
|
757
|
+
for (_i = 0, _a = Object.entries(configuration.token_request_extras); _i < _a.length; _i++) {
|
|
757
758
|
_b = _a[_i], key = _b[0], value = _b[1];
|
|
758
|
-
|
|
759
|
-
}
|
|
760
|
-
}
|
|
761
|
-
else if (configuration.token_request_extras) {
|
|
762
|
-
extrasRequest = {};
|
|
763
|
-
for (_c = 0, _d = Object.entries(configuration.token_request_extras); _c < _d.length; _c++) {
|
|
764
|
-
_e = _d[_c], key = _e[0], value = _e[1];
|
|
765
|
-
extrasRequest[key] = value;
|
|
759
|
+
extras[key] = value;
|
|
766
760
|
}
|
|
767
761
|
}
|
|
768
762
|
request = new appauth_1.TokenRequest({
|
|
@@ -771,28 +765,36 @@ var Oidc = /** @class */ (function () {
|
|
|
771
765
|
grant_type: appauth_1.GRANT_TYPE_REFRESH_TOKEN,
|
|
772
766
|
code: undefined,
|
|
773
767
|
refresh_token: refreshToken,
|
|
774
|
-
extras:
|
|
768
|
+
extras: extras
|
|
775
769
|
});
|
|
776
770
|
return [4 /*yield*/, this.initAsync(authority, configuration.authority_configuration)];
|
|
777
771
|
case 4:
|
|
778
|
-
oidcServerConfiguration =
|
|
772
|
+
oidcServerConfiguration = _c.sent();
|
|
779
773
|
return [4 /*yield*/, tokenHandler.performTokenRequest(oidcServerConfiguration, request)];
|
|
780
774
|
case 5:
|
|
781
|
-
token_response =
|
|
775
|
+
token_response = _c.sent();
|
|
782
776
|
this.publishEvent(silentEvent ? eventNames.refreshTokensAsync_silent_end : eventNames.refreshTokensAsync_end, token_response);
|
|
783
777
|
return [2 /*return*/, token_response];
|
|
784
778
|
case 6:
|
|
785
|
-
exception_5 =
|
|
779
|
+
exception_5 = _c.sent();
|
|
786
780
|
console.error(exception_5);
|
|
787
781
|
return [4 /*yield*/, localSilentSigninAsync(exception_5)];
|
|
788
|
-
case 7: return [2 /*return*/,
|
|
782
|
+
case 7: return [2 /*return*/, _c.sent()];
|
|
789
783
|
case 8: return [2 /*return*/];
|
|
790
784
|
}
|
|
791
785
|
});
|
|
792
786
|
});
|
|
793
787
|
};
|
|
794
788
|
Oidc.prototype.loginCallbackWithAutoTokensRenewAsync = function () {
|
|
795
|
-
|
|
789
|
+
var _this = this;
|
|
790
|
+
if (this.loginCallbackWithAutoTokensRenewPromise !== null) {
|
|
791
|
+
return this.loginCallbackWithAutoTokensRenewPromise;
|
|
792
|
+
}
|
|
793
|
+
this.loginCallbackWithAutoTokensRenewPromise = loginCallbackWithAutoTokensRenewAsync(this);
|
|
794
|
+
return this.loginCallbackWithAutoTokensRenewPromise.then(function (result) {
|
|
795
|
+
_this.loginCallbackWithAutoTokensRenewPromise = null;
|
|
796
|
+
return result;
|
|
797
|
+
});
|
|
796
798
|
};
|
|
797
799
|
Oidc.prototype.userInfoAsync = function () {
|
|
798
800
|
return userInfoAsync(this);
|
|
@@ -835,12 +837,11 @@ var Oidc = /** @class */ (function () {
|
|
|
835
837
|
return [4 /*yield*/, this.initAsync(configuration.authority, configuration.authority_configuration)];
|
|
836
838
|
case 1:
|
|
837
839
|
oidcServerConfiguration = _c.sent();
|
|
838
|
-
// TODO implement real logout
|
|
839
840
|
if (callbackPath && (typeof callbackPath !== 'string')) {
|
|
840
841
|
callbackPath = undefined;
|
|
841
842
|
console.warn('callbackPath path is not a string');
|
|
842
843
|
}
|
|
843
|
-
path = callbackPath || location.pathname + (location.search || '') + (location.hash || '');
|
|
844
|
+
path = (callbackPath === null || callbackPath === undefined) ? location.pathname + (location.search || '') + (location.hash || '') : callbackPath;
|
|
844
845
|
url = window.location.origin + path;
|
|
845
846
|
idToken = this.tokens ? this.tokens.idToken : "";
|
|
846
847
|
return [4 /*yield*/, this.destroyAsync()];
|