@axa-fr/react-oidc 6.8.1 → 6.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/vanilla/parseTokens.d.ts +9 -0
- package/dist/vanilla/parseTokens.d.ts.map +1 -1
- package/dist/vanilla/parseTokens.js +25 -1
- package/dist/vanilla/parseTokens.js.map +1 -1
- package/dist/vanilla/vanillaOidc.d.ts +1 -6
- package/dist/vanilla/vanillaOidc.d.ts.map +1 -1
- package/dist/vanilla/vanillaOidc.js +1 -13
- package/dist/vanilla/vanillaOidc.js.map +1 -1
- package/package.json +1 -1
- package/src/oidc/vanilla/parseTokens.spec.ts +48 -0
- package/src/oidc/vanilla/parseTokens.ts +28 -1
- package/src/oidc/vanilla/vanillaOidc.ts +2 -18
|
@@ -11,5 +11,14 @@ export declare const setTokens: (tokens: any, oldTokens?: any) => Tokens;
|
|
|
11
11
|
export declare const parseOriginalTokens: (tokens: any, oldTokens: any) => Tokens;
|
|
12
12
|
export declare const computeTimeLeft: (refreshTimeBeforeTokensExpirationInSecond: any, expiresAt: any) => number;
|
|
13
13
|
export declare const isTokensValid: (tokens: any) => boolean;
|
|
14
|
+
export declare type ValidToken = {
|
|
15
|
+
isTokensValid: Boolean;
|
|
16
|
+
tokens: Tokens;
|
|
17
|
+
numberWaited: Number;
|
|
18
|
+
};
|
|
19
|
+
export interface OidcToken {
|
|
20
|
+
tokens?: Tokens;
|
|
21
|
+
}
|
|
22
|
+
export declare const getValidTokenAsync: (oidc: OidcToken, waitMs?: number, numberWait?: number) => Promise<ValidToken>;
|
|
14
23
|
export declare const isTokensOidcValid: (tokens: any, nonce: any, oidcServerConfiguration: any) => boolean;
|
|
15
24
|
//# sourceMappingURL=parseTokens.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseTokens.d.ts","sourceRoot":"","sources":["../../src/oidc/vanilla/parseTokens.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parseTokens.d.ts","sourceRoot":"","sources":["../../src/oidc/vanilla/parseTokens.ts"],"names":[],"mappings":"AA4BA,oBAAY,MAAM,GAAG;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAC,GAAG,CAAC;IACnB,OAAO,EAAC,MAAM,CAAC;IACf,kBAAkB,EAAC,GAAG,CAAC;IACvB,WAAW,EAAC,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAA;CACnB,CAAC;AAEF,eAAO,MAAM,SAAS,oCAA4B,MAgCjD,CAAA;AAID,eAAO,MAAM,mBAAmB,yCAmC/B,CAAA;AAED,eAAO,MAAM,eAAe,4EAG3B,CAAA;AAED,eAAO,MAAM,aAAa,0BAKzB,CAAA;AAGD,oBAAY,UAAU,GAAG;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,WAAW,SAAS;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,kBAAkB,SAAgB,SAAS,2CAAkC,QAAQ,UAAU,CAY3G,CAAA;AAID,eAAO,MAAM,iBAAiB,oEA2B7B,CAAA"}
|
|
@@ -1,6 +1,16 @@
|
|
|
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
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isTokensOidcValid = exports.isTokensValid = exports.computeTimeLeft = exports.parseOriginalTokens = exports.setTokens = void 0;
|
|
12
|
+
exports.isTokensOidcValid = exports.getValidTokenAsync = exports.isTokensValid = exports.computeTimeLeft = exports.parseOriginalTokens = exports.setTokens = void 0;
|
|
13
|
+
const initWorker_1 = require("./initWorker");
|
|
4
14
|
const b64DecodeUnicode = (str) => decodeURIComponent(Array.prototype.map.call(atob(str), (c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join(''));
|
|
5
15
|
const parseJwt = (token) => JSON.parse(b64DecodeUnicode(token.split('.')[1].replace('-', '+').replace('_', '/')));
|
|
6
16
|
const extractTokenPayload = (token) => {
|
|
@@ -94,6 +104,20 @@ const isTokensValid = (tokens) => {
|
|
|
94
104
|
return (0, exports.computeTimeLeft)(0, tokens.expiresAt) > 0;
|
|
95
105
|
};
|
|
96
106
|
exports.isTokensValid = isTokensValid;
|
|
107
|
+
const getValidTokenAsync = (oidc, waitMs = 200, numberWait = 50) => __awaiter(void 0, void 0, void 0, function* () {
|
|
108
|
+
let numberWaitTemp = numberWait;
|
|
109
|
+
while (!(0, exports.isTokensValid)(oidc.tokens) && numberWaitTemp > 0) {
|
|
110
|
+
yield (0, initWorker_1.sleepAsync)(200);
|
|
111
|
+
numberWaitTemp = numberWaitTemp - 1;
|
|
112
|
+
}
|
|
113
|
+
const isValid = (0, exports.isTokensValid)(oidc.tokens);
|
|
114
|
+
return {
|
|
115
|
+
isTokensValid: isValid,
|
|
116
|
+
tokens: oidc.tokens,
|
|
117
|
+
numberWaited: numberWaitTemp - numberWait
|
|
118
|
+
};
|
|
119
|
+
});
|
|
120
|
+
exports.getValidTokenAsync = getValidTokenAsync;
|
|
97
121
|
// https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation (excluding rules #1, #4, #5, #7, #8, #12, and #13 which did not apply).
|
|
98
122
|
// https://github.com/openid/AppAuth-JS/issues/65
|
|
99
123
|
const isTokensOidcValid = (tokens, nonce, oidcServerConfiguration) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseTokens.js","sourceRoot":"","sources":["../../src/oidc/vanilla/parseTokens.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parseTokens.js","sourceRoot":"","sources":["../../src/oidc/vanilla/parseTokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { LoginCallback, Oidc, OidcConfiguration, StringMap } from "./oidc";
|
|
2
|
+
import { ValidToken } from "./parseTokens";
|
|
2
3
|
import { Tokens } from "./parseTokens";
|
|
3
|
-
declare type ValidToken = {
|
|
4
|
-
isTokensValid: Boolean;
|
|
5
|
-
tokens: Tokens;
|
|
6
|
-
numberWaited: Number;
|
|
7
|
-
};
|
|
8
4
|
export declare class VanillaOidc {
|
|
9
5
|
private _oidc;
|
|
10
6
|
constructor(oidc: Oidc);
|
|
@@ -52,5 +48,4 @@ export declare class VanillaOidc {
|
|
|
52
48
|
getValidTokenAsync(waitMs?: number, numberWait?: number): Promise<ValidToken>;
|
|
53
49
|
userInfoAsync(): Promise<any>;
|
|
54
50
|
}
|
|
55
|
-
export {};
|
|
56
51
|
//# sourceMappingURL=vanillaOidc.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vanillaOidc.d.ts","sourceRoot":"","sources":["../../src/oidc/vanilla/vanillaOidc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAC,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"vanillaOidc.d.ts","sourceRoot":"","sources":["../../src/oidc/vanilla/vanillaOidc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAC,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAoC,UAAU,EAAC,MAAM,eAAe,CAAC;AAE5E,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AAGrC,qBAAa,WAAW;IACpB,OAAO,CAAC,KAAK,CAAO;gBACR,IAAI,EAAE,IAAI;IAGtB,eAAe,CAAC,IAAI,EAAC,QAAQ,GAAE,MAAM;IAGrC,uBAAuB,CAAC,EAAE,EAAC,MAAM,GAAE,IAAI;IAGvC,YAAY,CAAC,SAAS,EAAC,MAAM,EAAE,IAAI,EAAC,GAAG,GAAI,IAAI;IAG/C,MAAM,CAAC,WAAW,CAAC,aAAa,EAAC,iBAAiB,EAAE,IAAI,GAAC,MAAgB,GAAE,WAAW;IAGtF,MAAM,CAAC,GAAG,CAAC,IAAI,GAAC,MAAgB,GAAE,WAAW;IAG7C,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAmB;IACpC,2BAA2B,IAAG,OAAO,CAAC,OAAO,CAAC;IAG9C,UAAU,CAAC,YAAY,GAAC,MAAgB,EAAE,MAAM,GAAC,SAAc,EAAE,cAAc,GAAC,OAAa,EAAE,KAAK,GAAC,MAAgB,EAAE,eAAe,UAAQ,GAAE,OAAO,CAAC,IAAI,CAAC;IAG7J,WAAW,CAAC,iBAAiB,GAAE,MAAM,GAAG,IAAI,GAAG,SAAqB,EAAE,MAAM,GAAE,SAAgB,GAAE,OAAO,CAAC,IAAI,CAAC;IAG7G,wBAAwB,IAAG,OAAO,CAAC,GAAG,CAAC;IAGvC,gBAAgB,CAAC,MAAM,GAAC,SAAc,GAAE,OAAO,CAAC,IAAI,CAAC;IAGrD,kBAAkB,IAAG,OAAO,CAAC,aAAa,CAAC;IAG3C,IAAI,MAAM,IAAG,MAAM,CAElB;IACD,IAAI,aAAa,IAAG,iBAAiB,CAEpC;IACK,kBAAkB,CAAC,MAAM,SAAI,EAAE,UAAU,SAAG,GAAI,OAAO,CAAC,UAAU,CAAC;IAGnE,aAAa,IAAG,OAAO,CAAC,GAAG,CAAC;CAGrC"}
|
|
@@ -12,7 +12,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.VanillaOidc = void 0;
|
|
13
13
|
const oidc_1 = require("./oidc");
|
|
14
14
|
const parseTokens_1 = require("./parseTokens");
|
|
15
|
-
const initWorker_1 = require("./initWorker");
|
|
16
15
|
class VanillaOidc {
|
|
17
16
|
constructor(oidc) {
|
|
18
17
|
this._oidc = oidc;
|
|
@@ -59,18 +58,7 @@ class VanillaOidc {
|
|
|
59
58
|
}
|
|
60
59
|
getValidTokenAsync(waitMs = 200, numberWait = 50) {
|
|
61
60
|
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
-
|
|
63
|
-
let numberWaitTemp = numberWait;
|
|
64
|
-
while (oidc.tokens && !(0, parseTokens_1.isTokensValid)(oidc.tokens) && numberWaitTemp > 0) {
|
|
65
|
-
yield (0, initWorker_1.sleepAsync)(200);
|
|
66
|
-
numberWaitTemp = numberWaitTemp - 1;
|
|
67
|
-
}
|
|
68
|
-
const isValid = !(0, parseTokens_1.isTokensValid)(oidc.tokens);
|
|
69
|
-
return {
|
|
70
|
-
isTokensValid: isValid,
|
|
71
|
-
tokens: oidc.tokens,
|
|
72
|
-
numberWaited: numberWaitTemp - numberWait
|
|
73
|
-
};
|
|
61
|
+
return (0, parseTokens_1.getValidTokenAsync)(this._oidc, waitMs, numberWait);
|
|
74
62
|
});
|
|
75
63
|
}
|
|
76
64
|
userInfoAsync() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vanillaOidc.js","sourceRoot":"","sources":["../../src/oidc/vanilla/vanillaOidc.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iCAAyE;AACzE,+
|
|
1
|
+
{"version":3,"file":"vanillaOidc.js","sourceRoot":"","sources":["../../src/oidc/vanilla/vanillaOidc.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iCAAyE;AACzE,+CAA4E;AAK5E,MAAa,WAAW;IAEpB,YAAY,IAAU;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,eAAe,CAAC,IAAa;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,uBAAuB,CAAC,EAAS;QAC7B,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,YAAY,CAAC,SAAgB,EAAE,IAAQ;QACnC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,CAAC,WAAW,CAAC,aAA+B,EAAE,OAAY,SAAS;QACrE,OAAO,IAAI,WAAW,CAAC,WAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,OAAY,SAAS;QAC5B,OAAO,IAAI,WAAW,CAAC,WAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,2BAA2B;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC;IACpD,CAAC;IACD,UAAU,CAAC,eAAoB,SAAS,EAAE,SAAiB,IAAI,EAAE,iBAAuB,KAAK,EAAE,QAAa,SAAS,EAAE,eAAe,GAAG,KAAK;QAC1I,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;IAC/F,CAAC;IACD,WAAW,CAAC,oBAA+C,SAAS,EAAE,SAAoB,IAAI;QAC1F,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IACD,wBAAwB;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC;IACjD,CAAC;IAAA,CAAC;IACF,gBAAgB,CAAC,SAAiB,IAAI;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,kBAAkB;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,qCAAqC,EAAE,CAAC;IAC9D,CAAC;IACD,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IACpC,CAAC;IACK,kBAAkB,CAAC,MAAM,GAAC,GAAG,EAAE,UAAU,GAAC,EAAE;;YAC9C,OAAO,IAAA,gCAAkB,EAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAC9D,CAAC;KAAA;IACK,aAAa;;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACtC,CAAC;KAAA;;AAlDL,kCAmDC;AA/BU,sBAAU,GAAG,WAAI,CAAC,UAAU,CAAC"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import {getValidTokenAsync, isTokensOidcValid} from "./parseTokens";
|
|
2
|
+
|
|
3
|
+
describe('ParseTokens test Suite', () => {
|
|
4
|
+
const currentTimeUnixSecond = new Date().getTime() / 1000;
|
|
5
|
+
describe.each([
|
|
6
|
+
[currentTimeUnixSecond + 120, currentTimeUnixSecond - 10, true],
|
|
7
|
+
[currentTimeUnixSecond - 20, currentTimeUnixSecond - 50, false],
|
|
8
|
+
])('getValidTokenAsync', (expiresAt, issuedAt, expectIsValidToken) => {
|
|
9
|
+
it('should getValidTokenAsync wait and return value', async () => {
|
|
10
|
+
const oidc = {
|
|
11
|
+
tokens: {
|
|
12
|
+
refreshToken: 'youhou',
|
|
13
|
+
idTokenPayload: null,
|
|
14
|
+
idToken: 'youhou',
|
|
15
|
+
accessTokenPayload: null,
|
|
16
|
+
accessToken: 'youhou',
|
|
17
|
+
expiresAt: expiresAt,
|
|
18
|
+
issuedAt: issuedAt,
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const result = await getValidTokenAsync(oidc, 1, 1);
|
|
22
|
+
expect(result.isTokensValid).toEqual(expectIsValidToken);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
const idTokenPayload = {iss: "toto", exp: currentTimeUnixSecond +900, iat: currentTimeUnixSecond -900, nonce: "nonce"};
|
|
28
|
+
const oidcServerConfiguration = {issuer:"toto"};
|
|
29
|
+
const idTokenPayloadExpired = {...idTokenPayload, exp: currentTimeUnixSecond-20};
|
|
30
|
+
const idTokenPayloadIssuedTooLongTimeAgo = {...idTokenPayload, iat: currentTimeUnixSecond-20000000};
|
|
31
|
+
|
|
32
|
+
describe.each([
|
|
33
|
+
[idTokenPayload, "nonce", oidcServerConfiguration, true, "success"],
|
|
34
|
+
[idTokenPayload, "other_nonce", oidcServerConfiguration, false, "bad nonce"],
|
|
35
|
+
[idTokenPayload, "nonce", {issuer:"tutu"}, false, "different issuer"],
|
|
36
|
+
[idTokenPayloadExpired, "nonce", oidcServerConfiguration, false, "id token expired issuer"],
|
|
37
|
+
[idTokenPayloadIssuedTooLongTimeAgo, "nonce", oidcServerConfiguration, false, "id token expired issuer"],
|
|
38
|
+
])('isTokensOidcValid', (idTokenPayload, nonce, oidcServerConfiguration, expectIsValidToken, status) => {
|
|
39
|
+
it('should isTokensOidcValid return ' + status, async () => {
|
|
40
|
+
const oidc = {
|
|
41
|
+
idTokenPayload
|
|
42
|
+
}
|
|
43
|
+
const isValid = await isTokensOidcValid(oidc, nonce, oidcServerConfiguration);
|
|
44
|
+
expect(isValid).toEqual(expectIsValidToken);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
});
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import {sleepAsync} from "./initWorker";
|
|
2
|
+
import Oidc from "./oidc";
|
|
3
|
+
|
|
2
4
|
|
|
3
5
|
const b64DecodeUnicode = (str) =>
|
|
4
6
|
decodeURIComponent(Array.prototype.map.call(atob(str), (c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join(''));
|
|
@@ -119,6 +121,31 @@ export const isTokensValid= (tokens) =>{
|
|
|
119
121
|
return computeTimeLeft(0, tokens.expiresAt) > 0;
|
|
120
122
|
}
|
|
121
123
|
|
|
124
|
+
|
|
125
|
+
export type ValidToken = {
|
|
126
|
+
isTokensValid: Boolean,
|
|
127
|
+
tokens: Tokens,
|
|
128
|
+
numberWaited: Number
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export interface OidcToken{
|
|
132
|
+
tokens?: Tokens;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export const getValidTokenAsync = async (oidc: OidcToken, waitMs = 200, numberWait = 50): Promise<ValidToken> => {
|
|
136
|
+
let numberWaitTemp = numberWait;
|
|
137
|
+
while (!isTokensValid(oidc.tokens) && numberWaitTemp > 0) {
|
|
138
|
+
await sleepAsync(200);
|
|
139
|
+
numberWaitTemp = numberWaitTemp - 1;
|
|
140
|
+
}
|
|
141
|
+
const isValid = isTokensValid(oidc.tokens);
|
|
142
|
+
return {
|
|
143
|
+
isTokensValid: isValid,
|
|
144
|
+
tokens: oidc.tokens,
|
|
145
|
+
numberWaited: numberWaitTemp - numberWait
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
|
|
122
149
|
// https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation (excluding rules #1, #4, #5, #7, #8, #12, and #13 which did not apply).
|
|
123
150
|
// https://github.com/openid/AppAuth-JS/issues/65
|
|
124
151
|
export const isTokensOidcValid =(tokens, nonce, oidcServerConfiguration) =>{
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
import {LoginCallback, Oidc, OidcConfiguration, StringMap} from "./oidc";
|
|
2
|
-
import {isTokensValid} from "./parseTokens";
|
|
2
|
+
import {getValidTokenAsync, isTokensValid, ValidToken} from "./parseTokens";
|
|
3
3
|
import {sleepAsync} from "./initWorker";
|
|
4
4
|
import {Tokens} from "./parseTokens";
|
|
5
5
|
|
|
6
|
-
type ValidToken = {
|
|
7
|
-
isTokensValid: Boolean,
|
|
8
|
-
tokens: Tokens,
|
|
9
|
-
numberWaited: Number
|
|
10
|
-
}
|
|
11
6
|
|
|
12
7
|
export class VanillaOidc {
|
|
13
8
|
private _oidc: Oidc;
|
|
@@ -55,18 +50,7 @@ export class VanillaOidc {
|
|
|
55
50
|
return this._oidc.configuration;
|
|
56
51
|
}
|
|
57
52
|
async getValidTokenAsync(waitMs=200, numberWait=50 ): Promise<ValidToken> {
|
|
58
|
-
|
|
59
|
-
let numberWaitTemp = numberWait;
|
|
60
|
-
while (oidc.tokens && !isTokensValid(oidc.tokens) && numberWaitTemp > 0) {
|
|
61
|
-
await sleepAsync(200);
|
|
62
|
-
numberWaitTemp=numberWaitTemp-1;
|
|
63
|
-
}
|
|
64
|
-
const isValid = !isTokensValid(oidc.tokens);
|
|
65
|
-
return {
|
|
66
|
-
isTokensValid: isValid,
|
|
67
|
-
tokens: oidc.tokens,
|
|
68
|
-
numberWaited: numberWaitTemp - numberWait
|
|
69
|
-
};
|
|
53
|
+
return getValidTokenAsync(this._oidc, waitMs, numberWait);
|
|
70
54
|
}
|
|
71
55
|
async userInfoAsync():Promise<any>{
|
|
72
56
|
return this._oidc.userInfoAsync();
|