@versini/auth-provider 3.1.0 → 4.1.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/dist/index.js +329 -283
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as pe } from "react/jsx-runtime";
|
|
2
2
|
import * as I from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { createContext as fe, useState as ye, useCallback as me, useEffect as we, useContext as Se } from "react";
|
|
4
4
|
/*!
|
|
5
|
-
@versini/auth-provider
|
|
5
|
+
@versini/auth-provider v4.1.0
|
|
6
6
|
© 2024 gizmette.com
|
|
7
7
|
*/
|
|
8
8
|
try {
|
|
9
9
|
window.__VERSINI_AUTH_CLIENT__ || (window.__VERSINI_AUTH_CLIENT__ = {
|
|
10
|
-
version: "
|
|
11
|
-
buildTime: "06/
|
|
10
|
+
version: "4.1.0",
|
|
11
|
+
buildTime: "06/26/2024 12:59 PM EDT",
|
|
12
12
|
homepage: "https://github.com/aversini/auth-client",
|
|
13
13
|
license: "MIT"
|
|
14
14
|
});
|
|
15
15
|
} catch {
|
|
16
16
|
}
|
|
17
17
|
/*!
|
|
18
|
-
@versini/auth-common v2.
|
|
18
|
+
@versini/auth-common v2.6.0
|
|
19
19
|
© 2024 gizmette.com
|
|
20
20
|
*/
|
|
21
21
|
try {
|
|
22
22
|
window.__VERSINI_AUTH_COMMON__ || (window.__VERSINI_AUTH_COMMON__ = {
|
|
23
|
-
version: "2.
|
|
24
|
-
buildTime: "06/
|
|
23
|
+
version: "2.6.0",
|
|
24
|
+
buildTime: "06/26/2024 12:59 PM EDT",
|
|
25
25
|
homepage: "https://github.com/aversini/auth-client",
|
|
26
26
|
license: "MIT"
|
|
27
27
|
});
|
|
28
28
|
} catch {
|
|
29
29
|
}
|
|
30
|
-
const
|
|
31
|
-
function
|
|
32
|
-
const t = e.reduce((
|
|
30
|
+
const x = crypto, Z = (e) => e instanceof CryptoKey, v = new TextEncoder(), C = new TextDecoder();
|
|
31
|
+
function Ee(...e) {
|
|
32
|
+
const t = e.reduce((a, { length: s }) => a + s, 0), o = new Uint8Array(t);
|
|
33
33
|
let r = 0;
|
|
34
|
-
for (const
|
|
35
|
-
o.set(
|
|
34
|
+
for (const a of e)
|
|
35
|
+
o.set(a, r), r += a.length;
|
|
36
36
|
return o;
|
|
37
37
|
}
|
|
38
|
-
const
|
|
38
|
+
const ge = (e) => {
|
|
39
39
|
const t = atob(e), o = new Uint8Array(t.length);
|
|
40
40
|
for (let r = 0; r < t.length; r++)
|
|
41
41
|
o[r] = t.charCodeAt(r);
|
|
42
42
|
return o;
|
|
43
|
-
},
|
|
43
|
+
}, N = (e) => {
|
|
44
44
|
let t = e;
|
|
45
45
|
t instanceof Uint8Array && (t = C.decode(t)), t = t.replace(/-/g, "+").replace(/_/g, "/").replace(/\s/g, "");
|
|
46
46
|
try {
|
|
47
|
-
return
|
|
47
|
+
return ge(t);
|
|
48
48
|
} catch {
|
|
49
49
|
throw new TypeError("The input to be decoded is not correctly encoded.");
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
|
-
let
|
|
52
|
+
let b = class extends Error {
|
|
53
53
|
static get code() {
|
|
54
54
|
return "ERR_JOSE_GENERIC";
|
|
55
55
|
}
|
|
@@ -58,23 +58,23 @@ let _ = class extends Error {
|
|
|
58
58
|
super(t), this.code = "ERR_JOSE_GENERIC", this.name = this.constructor.name, (o = Error.captureStackTrace) == null || o.call(Error, this, this.constructor);
|
|
59
59
|
}
|
|
60
60
|
};
|
|
61
|
-
class S extends
|
|
61
|
+
class S extends b {
|
|
62
62
|
static get code() {
|
|
63
63
|
return "ERR_JWT_CLAIM_VALIDATION_FAILED";
|
|
64
64
|
}
|
|
65
|
-
constructor(t, o, r = "unspecified",
|
|
66
|
-
super(t), this.code = "ERR_JWT_CLAIM_VALIDATION_FAILED", this.claim = r, this.reason =
|
|
65
|
+
constructor(t, o, r = "unspecified", a = "unspecified") {
|
|
66
|
+
super(t), this.code = "ERR_JWT_CLAIM_VALIDATION_FAILED", this.claim = r, this.reason = a, this.payload = o;
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
-
class
|
|
69
|
+
class V extends b {
|
|
70
70
|
static get code() {
|
|
71
71
|
return "ERR_JWT_EXPIRED";
|
|
72
72
|
}
|
|
73
|
-
constructor(t, o, r = "unspecified",
|
|
74
|
-
super(t), this.code = "ERR_JWT_EXPIRED", this.claim = r, this.reason =
|
|
73
|
+
constructor(t, o, r = "unspecified", a = "unspecified") {
|
|
74
|
+
super(t), this.code = "ERR_JWT_EXPIRED", this.claim = r, this.reason = a, this.payload = o;
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
class
|
|
77
|
+
class Ae extends b {
|
|
78
78
|
constructor() {
|
|
79
79
|
super(...arguments), this.code = "ERR_JOSE_ALG_NOT_ALLOWED";
|
|
80
80
|
}
|
|
@@ -82,7 +82,7 @@ class we extends _ {
|
|
|
82
82
|
return "ERR_JOSE_ALG_NOT_ALLOWED";
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
class P extends
|
|
85
|
+
class P extends b {
|
|
86
86
|
constructor() {
|
|
87
87
|
super(...arguments), this.code = "ERR_JOSE_NOT_SUPPORTED";
|
|
88
88
|
}
|
|
@@ -90,7 +90,7 @@ class P extends _ {
|
|
|
90
90
|
return "ERR_JOSE_NOT_SUPPORTED";
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
-
let d = class extends
|
|
93
|
+
let d = class extends b {
|
|
94
94
|
constructor() {
|
|
95
95
|
super(...arguments), this.code = "ERR_JWS_INVALID";
|
|
96
96
|
}
|
|
@@ -98,7 +98,7 @@ let d = class extends _ {
|
|
|
98
98
|
return "ERR_JWS_INVALID";
|
|
99
99
|
}
|
|
100
100
|
};
|
|
101
|
-
class
|
|
101
|
+
class ee extends b {
|
|
102
102
|
constructor() {
|
|
103
103
|
super(...arguments), this.code = "ERR_JWT_INVALID";
|
|
104
104
|
}
|
|
@@ -106,7 +106,7 @@ class Z extends _ {
|
|
|
106
106
|
return "ERR_JWT_INVALID";
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
-
class
|
|
109
|
+
class _e extends b {
|
|
110
110
|
constructor() {
|
|
111
111
|
super(...arguments), this.code = "ERR_JWS_SIGNATURE_VERIFICATION_FAILED", this.message = "signature verification failed";
|
|
112
112
|
}
|
|
@@ -120,10 +120,10 @@ function E(e, t = "algorithm.name") {
|
|
|
120
120
|
function R(e, t) {
|
|
121
121
|
return e.name === t;
|
|
122
122
|
}
|
|
123
|
-
function
|
|
123
|
+
function D(e) {
|
|
124
124
|
return parseInt(e.name.slice(4), 10);
|
|
125
125
|
}
|
|
126
|
-
function
|
|
126
|
+
function be(e) {
|
|
127
127
|
switch (e) {
|
|
128
128
|
case "ES256":
|
|
129
129
|
return "P-256";
|
|
@@ -135,7 +135,7 @@ function Ee(e) {
|
|
|
135
135
|
throw new Error("unreachable");
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
|
-
function
|
|
138
|
+
function Ie(e, t) {
|
|
139
139
|
if (t.length && !t.some((o) => e.usages.includes(o))) {
|
|
140
140
|
let o = "CryptoKey does not support this operation, its usages must include ";
|
|
141
141
|
if (t.length > 2) {
|
|
@@ -146,7 +146,7 @@ function ge(e, t) {
|
|
|
146
146
|
throw new TypeError(o);
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
|
-
function
|
|
149
|
+
function Te(e, t, ...o) {
|
|
150
150
|
switch (t) {
|
|
151
151
|
case "HS256":
|
|
152
152
|
case "HS384":
|
|
@@ -154,7 +154,7 @@ function Ae(e, t, ...o) {
|
|
|
154
154
|
if (!R(e.algorithm, "HMAC"))
|
|
155
155
|
throw E("HMAC");
|
|
156
156
|
const r = parseInt(t.slice(2), 10);
|
|
157
|
-
if (
|
|
157
|
+
if (D(e.algorithm.hash) !== r)
|
|
158
158
|
throw E(`SHA-${r}`, "algorithm.hash");
|
|
159
159
|
break;
|
|
160
160
|
}
|
|
@@ -164,7 +164,7 @@ function Ae(e, t, ...o) {
|
|
|
164
164
|
if (!R(e.algorithm, "RSASSA-PKCS1-v1_5"))
|
|
165
165
|
throw E("RSASSA-PKCS1-v1_5");
|
|
166
166
|
const r = parseInt(t.slice(2), 10);
|
|
167
|
-
if (
|
|
167
|
+
if (D(e.algorithm.hash) !== r)
|
|
168
168
|
throw E(`SHA-${r}`, "algorithm.hash");
|
|
169
169
|
break;
|
|
170
170
|
}
|
|
@@ -174,7 +174,7 @@ function Ae(e, t, ...o) {
|
|
|
174
174
|
if (!R(e.algorithm, "RSA-PSS"))
|
|
175
175
|
throw E("RSA-PSS");
|
|
176
176
|
const r = parseInt(t.slice(2), 10);
|
|
177
|
-
if (
|
|
177
|
+
if (D(e.algorithm.hash) !== r)
|
|
178
178
|
throw E(`SHA-${r}`, "algorithm.hash");
|
|
179
179
|
break;
|
|
180
180
|
}
|
|
@@ -188,7 +188,7 @@ function Ae(e, t, ...o) {
|
|
|
188
188
|
case "ES512": {
|
|
189
189
|
if (!R(e.algorithm, "ECDSA"))
|
|
190
190
|
throw E("ECDSA");
|
|
191
|
-
const r =
|
|
191
|
+
const r = be(t);
|
|
192
192
|
if (e.algorithm.namedCurve !== r)
|
|
193
193
|
throw E(r, "algorithm.namedCurve");
|
|
194
194
|
break;
|
|
@@ -196,45 +196,45 @@ function Ae(e, t, ...o) {
|
|
|
196
196
|
default:
|
|
197
197
|
throw new TypeError("CryptoKey does not support this operation");
|
|
198
198
|
}
|
|
199
|
-
|
|
199
|
+
Ie(e, o);
|
|
200
200
|
}
|
|
201
|
-
function
|
|
201
|
+
function te(e, t, ...o) {
|
|
202
202
|
var r;
|
|
203
203
|
if (o.length > 2) {
|
|
204
|
-
const
|
|
205
|
-
e += `one of type ${o.join(", ")}, or ${
|
|
204
|
+
const a = o.pop();
|
|
205
|
+
e += `one of type ${o.join(", ")}, or ${a}.`;
|
|
206
206
|
} else
|
|
207
207
|
o.length === 2 ? e += `one of type ${o[0]} or ${o[1]}.` : e += `of type ${o[0]}.`;
|
|
208
208
|
return t == null ? e += ` Received ${t}` : typeof t == "function" && t.name ? e += ` Received function ${t.name}` : typeof t == "object" && t != null && (r = t.constructor) != null && r.name && (e += ` Received an instance of ${t.constructor.name}`), e;
|
|
209
209
|
}
|
|
210
|
-
const
|
|
211
|
-
function
|
|
212
|
-
return
|
|
210
|
+
const Y = (e, ...t) => te("Key must be ", e, ...t);
|
|
211
|
+
function re(e, t, ...o) {
|
|
212
|
+
return te(`Key for the ${e} algorithm must be `, t, ...o);
|
|
213
213
|
}
|
|
214
|
-
const
|
|
214
|
+
const oe = (e) => Z(e), A = ["CryptoKey"], ve = (...e) => {
|
|
215
215
|
const t = e.filter(Boolean);
|
|
216
216
|
if (t.length === 0 || t.length === 1)
|
|
217
217
|
return !0;
|
|
218
218
|
let o;
|
|
219
219
|
for (const r of t) {
|
|
220
|
-
const
|
|
220
|
+
const a = Object.keys(r);
|
|
221
221
|
if (!o || o.size === 0) {
|
|
222
|
-
o = new Set(
|
|
222
|
+
o = new Set(a);
|
|
223
223
|
continue;
|
|
224
224
|
}
|
|
225
|
-
for (const
|
|
226
|
-
if (o.has(
|
|
225
|
+
for (const s of a) {
|
|
226
|
+
if (o.has(s))
|
|
227
227
|
return !1;
|
|
228
|
-
o.add(
|
|
228
|
+
o.add(s);
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
return !0;
|
|
232
232
|
};
|
|
233
|
-
function
|
|
233
|
+
function Re(e) {
|
|
234
234
|
return typeof e == "object" && e !== null;
|
|
235
235
|
}
|
|
236
|
-
function
|
|
237
|
-
if (!
|
|
236
|
+
function W(e) {
|
|
237
|
+
if (!Re(e) || Object.prototype.toString.call(e) !== "[object Object]")
|
|
238
238
|
return !1;
|
|
239
239
|
if (Object.getPrototypeOf(e) === null)
|
|
240
240
|
return !0;
|
|
@@ -243,7 +243,7 @@ function J(e) {
|
|
|
243
243
|
t = Object.getPrototypeOf(t);
|
|
244
244
|
return Object.getPrototypeOf(e) === t;
|
|
245
245
|
}
|
|
246
|
-
const
|
|
246
|
+
const ke = (e, t) => {
|
|
247
247
|
if (e.startsWith("RS") || e.startsWith("PS")) {
|
|
248
248
|
const { modulusLength: o } = t.algorithm;
|
|
249
249
|
if (typeof o != "number" || o < 2048)
|
|
@@ -254,9 +254,9 @@ const Ie = (e, t) => {
|
|
|
254
254
|
const r = e.indexOf(t[0], o);
|
|
255
255
|
if (r === -1)
|
|
256
256
|
return !1;
|
|
257
|
-
const
|
|
258
|
-
return
|
|
259
|
-
},
|
|
257
|
+
const a = e.subarray(r, r + t.length);
|
|
258
|
+
return a.length !== t.length ? !1 : a.every((s, n) => s === t[n]) || g(e, t, r + 1);
|
|
259
|
+
}, G = (e) => {
|
|
260
260
|
switch (!0) {
|
|
261
261
|
case g(e, [42, 134, 72, 206, 61, 3, 1, 7]):
|
|
262
262
|
return "P-256";
|
|
@@ -275,104 +275,104 @@ const Ie = (e, t) => {
|
|
|
275
275
|
default:
|
|
276
276
|
throw new P("Invalid or unsupported EC Key Curve or OKP Key Sub Type");
|
|
277
277
|
}
|
|
278
|
-
},
|
|
279
|
-
let
|
|
278
|
+
}, Ce = async (e, t, o, r, a) => {
|
|
279
|
+
let s, n;
|
|
280
280
|
const i = new Uint8Array(atob(o.replace(e, "")).split("").map((c) => c.charCodeAt(0)));
|
|
281
281
|
switch (r) {
|
|
282
282
|
case "PS256":
|
|
283
283
|
case "PS384":
|
|
284
284
|
case "PS512":
|
|
285
|
-
|
|
285
|
+
s = { name: "RSA-PSS", hash: `SHA-${r.slice(-3)}` }, n = ["verify"];
|
|
286
286
|
break;
|
|
287
287
|
case "RS256":
|
|
288
288
|
case "RS384":
|
|
289
289
|
case "RS512":
|
|
290
|
-
|
|
290
|
+
s = { name: "RSASSA-PKCS1-v1_5", hash: `SHA-${r.slice(-3)}` }, n = ["verify"];
|
|
291
291
|
break;
|
|
292
292
|
case "RSA-OAEP":
|
|
293
293
|
case "RSA-OAEP-256":
|
|
294
294
|
case "RSA-OAEP-384":
|
|
295
295
|
case "RSA-OAEP-512":
|
|
296
|
-
|
|
296
|
+
s = {
|
|
297
297
|
name: "RSA-OAEP",
|
|
298
298
|
hash: `SHA-${parseInt(r.slice(-3), 10) || 1}`
|
|
299
|
-
},
|
|
299
|
+
}, n = ["encrypt", "wrapKey"];
|
|
300
300
|
break;
|
|
301
301
|
case "ES256":
|
|
302
|
-
|
|
302
|
+
s = { name: "ECDSA", namedCurve: "P-256" }, n = ["verify"];
|
|
303
303
|
break;
|
|
304
304
|
case "ES384":
|
|
305
|
-
|
|
305
|
+
s = { name: "ECDSA", namedCurve: "P-384" }, n = ["verify"];
|
|
306
306
|
break;
|
|
307
307
|
case "ES512":
|
|
308
|
-
|
|
308
|
+
s = { name: "ECDSA", namedCurve: "P-521" }, n = ["verify"];
|
|
309
309
|
break;
|
|
310
310
|
case "ECDH-ES":
|
|
311
311
|
case "ECDH-ES+A128KW":
|
|
312
312
|
case "ECDH-ES+A192KW":
|
|
313
313
|
case "ECDH-ES+A256KW": {
|
|
314
|
-
const c =
|
|
315
|
-
|
|
314
|
+
const c = G(i);
|
|
315
|
+
s = c.startsWith("P-") ? { name: "ECDH", namedCurve: c } : { name: c }, n = [];
|
|
316
316
|
break;
|
|
317
317
|
}
|
|
318
318
|
case "EdDSA":
|
|
319
|
-
|
|
319
|
+
s = { name: G(i) }, n = ["verify"];
|
|
320
320
|
break;
|
|
321
321
|
default:
|
|
322
322
|
throw new P('Invalid or unsupported "alg" (Algorithm) value');
|
|
323
323
|
}
|
|
324
|
-
return
|
|
325
|
-
},
|
|
326
|
-
async function
|
|
324
|
+
return x.subtle.importKey(t, i, s, !1, n);
|
|
325
|
+
}, Pe = (e, t, o) => Ce(/(?:-----(?:BEGIN|END) PUBLIC KEY-----|\s)/g, "spki", e, t);
|
|
326
|
+
async function Oe(e, t, o) {
|
|
327
327
|
if (e.indexOf("-----BEGIN PUBLIC KEY-----") !== 0)
|
|
328
328
|
throw new TypeError('"spki" must be SPKI formatted string');
|
|
329
|
-
return
|
|
329
|
+
return Pe(e, t);
|
|
330
330
|
}
|
|
331
|
-
const
|
|
331
|
+
const Ne = (e, t) => {
|
|
332
332
|
if (!(t instanceof Uint8Array)) {
|
|
333
|
-
if (!
|
|
334
|
-
throw new TypeError(
|
|
333
|
+
if (!oe(t))
|
|
334
|
+
throw new TypeError(re(e, t, ...A, "Uint8Array"));
|
|
335
335
|
if (t.type !== "secret")
|
|
336
336
|
throw new TypeError(`${A.join(" or ")} instances for symmetric algorithms must be of type "secret"`);
|
|
337
337
|
}
|
|
338
|
-
},
|
|
339
|
-
if (!
|
|
340
|
-
throw new TypeError(
|
|
338
|
+
}, De = (e, t, o) => {
|
|
339
|
+
if (!oe(t))
|
|
340
|
+
throw new TypeError(re(e, t, ...A));
|
|
341
341
|
if (t.type === "secret")
|
|
342
342
|
throw new TypeError(`${A.join(" or ")} instances for asymmetric algorithms must not be of type "secret"`);
|
|
343
343
|
if (t.algorithm && o === "verify" && t.type === "private")
|
|
344
344
|
throw new TypeError(`${A.join(" or ")} instances for asymmetric algorithm verifying must be of type "public"`);
|
|
345
345
|
if (t.algorithm && o === "encrypt" && t.type === "private")
|
|
346
346
|
throw new TypeError(`${A.join(" or ")} instances for asymmetric algorithm encryption must be of type "public"`);
|
|
347
|
-
},
|
|
348
|
-
e.startsWith("HS") || e === "dir" || e.startsWith("PBES2") || /^A\d{3}(?:GCM)?KW$/.test(e) ?
|
|
347
|
+
}, Ue = (e, t, o) => {
|
|
348
|
+
e.startsWith("HS") || e === "dir" || e.startsWith("PBES2") || /^A\d{3}(?:GCM)?KW$/.test(e) ? Ne(e, t) : De(e, t, o);
|
|
349
349
|
};
|
|
350
|
-
function
|
|
351
|
-
if (
|
|
350
|
+
function He(e, t, o, r, a) {
|
|
351
|
+
if (a.crit !== void 0 && (r == null ? void 0 : r.crit) === void 0)
|
|
352
352
|
throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');
|
|
353
353
|
if (!r || r.crit === void 0)
|
|
354
354
|
return /* @__PURE__ */ new Set();
|
|
355
|
-
if (!Array.isArray(r.crit) || r.crit.length === 0 || r.crit.some((
|
|
355
|
+
if (!Array.isArray(r.crit) || r.crit.length === 0 || r.crit.some((n) => typeof n != "string" || n.length === 0))
|
|
356
356
|
throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');
|
|
357
|
-
let
|
|
358
|
-
o !== void 0 ?
|
|
359
|
-
for (const
|
|
360
|
-
if (!
|
|
361
|
-
throw new P(`Extension Header Parameter "${
|
|
362
|
-
if (n
|
|
363
|
-
throw new e(`Extension Header Parameter "${
|
|
364
|
-
if (
|
|
365
|
-
throw new e(`Extension Header Parameter "${
|
|
357
|
+
let s;
|
|
358
|
+
o !== void 0 ? s = new Map([...Object.entries(o), ...t.entries()]) : s = t;
|
|
359
|
+
for (const n of r.crit) {
|
|
360
|
+
if (!s.has(n))
|
|
361
|
+
throw new P(`Extension Header Parameter "${n}" is not recognized`);
|
|
362
|
+
if (a[n] === void 0)
|
|
363
|
+
throw new e(`Extension Header Parameter "${n}" is missing`);
|
|
364
|
+
if (s.get(n) && r[n] === void 0)
|
|
365
|
+
throw new e(`Extension Header Parameter "${n}" MUST be integrity protected`);
|
|
366
366
|
}
|
|
367
367
|
return new Set(r.crit);
|
|
368
368
|
}
|
|
369
|
-
const
|
|
369
|
+
const Le = (e, t) => {
|
|
370
370
|
if (t !== void 0 && (!Array.isArray(t) || t.some((o) => typeof o != "string")))
|
|
371
371
|
throw new TypeError(`"${e}" option must be an array of strings`);
|
|
372
372
|
if (t)
|
|
373
373
|
return new Set(t);
|
|
374
374
|
};
|
|
375
|
-
function
|
|
375
|
+
function $e(e, t) {
|
|
376
376
|
const o = `SHA-${e.slice(-3)}`;
|
|
377
377
|
switch (e) {
|
|
378
378
|
case "HS256":
|
|
@@ -397,28 +397,28 @@ function Ne(e, t) {
|
|
|
397
397
|
throw new P(`alg ${e} is not supported either by JOSE or your javascript runtime`);
|
|
398
398
|
}
|
|
399
399
|
}
|
|
400
|
-
function
|
|
401
|
-
if (
|
|
402
|
-
return
|
|
400
|
+
function Je(e, t, o) {
|
|
401
|
+
if (Z(t))
|
|
402
|
+
return Te(t, e, o), t;
|
|
403
403
|
if (t instanceof Uint8Array) {
|
|
404
404
|
if (!e.startsWith("HS"))
|
|
405
|
-
throw new TypeError(
|
|
406
|
-
return
|
|
405
|
+
throw new TypeError(Y(t, ...A));
|
|
406
|
+
return x.subtle.importKey("raw", t, { hash: `SHA-${e.slice(-3)}`, name: "HMAC" }, !1, [o]);
|
|
407
407
|
}
|
|
408
|
-
throw new TypeError(
|
|
408
|
+
throw new TypeError(Y(t, ...A, "Uint8Array"));
|
|
409
409
|
}
|
|
410
|
-
const
|
|
411
|
-
const
|
|
412
|
-
|
|
413
|
-
const
|
|
410
|
+
const Ke = async (e, t, o, r) => {
|
|
411
|
+
const a = await Je(e, t, "verify");
|
|
412
|
+
ke(e, a);
|
|
413
|
+
const s = $e(e, a.algorithm);
|
|
414
414
|
try {
|
|
415
|
-
return await
|
|
415
|
+
return await x.subtle.verify(s, a, o, r);
|
|
416
416
|
} catch {
|
|
417
417
|
return !1;
|
|
418
418
|
}
|
|
419
419
|
};
|
|
420
|
-
async function
|
|
421
|
-
if (!
|
|
420
|
+
async function We(e, t, o) {
|
|
421
|
+
if (!W(e))
|
|
422
422
|
throw new d("Flattened JWS must be an object");
|
|
423
423
|
if (e.protected === void 0 && e.header === void 0)
|
|
424
424
|
throw new d('Flattened JWS must have either of the "protected" or "header" members');
|
|
@@ -428,137 +428,137 @@ async function Le(e, t, o) {
|
|
|
428
428
|
throw new d("JWS Payload missing");
|
|
429
429
|
if (typeof e.signature != "string")
|
|
430
430
|
throw new d("JWS Signature missing or incorrect type");
|
|
431
|
-
if (e.header !== void 0 && !
|
|
431
|
+
if (e.header !== void 0 && !W(e.header))
|
|
432
432
|
throw new d("JWS Unprotected Header incorrect type");
|
|
433
433
|
let r = {};
|
|
434
434
|
if (e.protected)
|
|
435
435
|
try {
|
|
436
|
-
const w =
|
|
436
|
+
const w = N(e.protected);
|
|
437
437
|
r = JSON.parse(C.decode(w));
|
|
438
438
|
} catch {
|
|
439
439
|
throw new d("JWS Protected Header is invalid");
|
|
440
440
|
}
|
|
441
|
-
if (!
|
|
441
|
+
if (!ve(r, e.header))
|
|
442
442
|
throw new d("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");
|
|
443
|
-
const
|
|
443
|
+
const a = {
|
|
444
444
|
...r,
|
|
445
445
|
...e.header
|
|
446
|
-
},
|
|
447
|
-
let
|
|
448
|
-
if (
|
|
446
|
+
}, s = He(d, /* @__PURE__ */ new Map([["b64", !0]]), o == null ? void 0 : o.crit, r, a);
|
|
447
|
+
let n = !0;
|
|
448
|
+
if (s.has("b64") && (n = r.b64, typeof n != "boolean"))
|
|
449
449
|
throw new d('The "b64" (base64url-encode payload) Header Parameter must be a boolean');
|
|
450
|
-
const { alg: i } =
|
|
450
|
+
const { alg: i } = a;
|
|
451
451
|
if (typeof i != "string" || !i)
|
|
452
452
|
throw new d('JWS "alg" (Algorithm) Header Parameter missing or invalid');
|
|
453
|
-
const c = o &&
|
|
453
|
+
const c = o && Le("algorithms", o.algorithms);
|
|
454
454
|
if (c && !c.has(i))
|
|
455
|
-
throw new
|
|
456
|
-
if (
|
|
455
|
+
throw new Ae('"alg" (Algorithm) Header Parameter value not allowed');
|
|
456
|
+
if (n) {
|
|
457
457
|
if (typeof e.payload != "string")
|
|
458
458
|
throw new d("JWS Payload must be a string");
|
|
459
459
|
} else if (typeof e.payload != "string" && !(e.payload instanceof Uint8Array))
|
|
460
460
|
throw new d("JWS Payload must be a string or an Uint8Array instance");
|
|
461
461
|
let p = !1;
|
|
462
|
-
typeof t == "function" && (t = await t(r, e), p = !0),
|
|
463
|
-
const
|
|
462
|
+
typeof t == "function" && (t = await t(r, e), p = !0), Ue(i, t, "verify");
|
|
463
|
+
const y = Ee(v.encode(e.protected ?? ""), v.encode("."), typeof e.payload == "string" ? v.encode(e.payload) : e.payload);
|
|
464
464
|
let l;
|
|
465
465
|
try {
|
|
466
|
-
l =
|
|
466
|
+
l = N(e.signature);
|
|
467
467
|
} catch {
|
|
468
468
|
throw new d("Failed to base64url decode the signature");
|
|
469
469
|
}
|
|
470
|
-
if (!await
|
|
471
|
-
throw new
|
|
472
|
-
let
|
|
473
|
-
if (
|
|
470
|
+
if (!await Ke(i, t, l, y))
|
|
471
|
+
throw new _e();
|
|
472
|
+
let m;
|
|
473
|
+
if (n)
|
|
474
474
|
try {
|
|
475
|
-
|
|
475
|
+
m = N(e.payload);
|
|
476
476
|
} catch {
|
|
477
477
|
throw new d("Failed to base64url decode the payload");
|
|
478
478
|
}
|
|
479
479
|
else
|
|
480
|
-
typeof e.payload == "string" ?
|
|
481
|
-
const
|
|
482
|
-
return e.protected !== void 0 && (
|
|
480
|
+
typeof e.payload == "string" ? m = v.encode(e.payload) : m = e.payload;
|
|
481
|
+
const h = { payload: m };
|
|
482
|
+
return e.protected !== void 0 && (h.protectedHeader = r), e.header !== void 0 && (h.unprotectedHeader = e.header), p ? { ...h, key: t } : h;
|
|
483
483
|
}
|
|
484
|
-
async function
|
|
484
|
+
async function xe(e, t, o) {
|
|
485
485
|
if (e instanceof Uint8Array && (e = C.decode(e)), typeof e != "string")
|
|
486
486
|
throw new d("Compact JWS must be a string or Uint8Array");
|
|
487
|
-
const { 0: r, 1:
|
|
488
|
-
if (
|
|
487
|
+
const { 0: r, 1: a, 2: s, length: n } = e.split(".");
|
|
488
|
+
if (n !== 3)
|
|
489
489
|
throw new d("Invalid Compact JWS");
|
|
490
|
-
const i = await
|
|
490
|
+
const i = await We({ payload: a, protected: r, signature: s }, t, o), c = { payload: i.payload, protectedHeader: i.protectedHeader };
|
|
491
491
|
return typeof t == "function" ? { ...c, key: i.key } : c;
|
|
492
492
|
}
|
|
493
|
-
const
|
|
494
|
-
const t =
|
|
493
|
+
const je = (e) => Math.floor(e.getTime() / 1e3), ae = 60, ne = ae * 60, j = ne * 24, Me = j * 7, Ve = j * 365.25, Ye = /^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i, B = (e) => {
|
|
494
|
+
const t = Ye.exec(e);
|
|
495
495
|
if (!t || t[4] && t[1])
|
|
496
496
|
throw new TypeError("Invalid time period format");
|
|
497
497
|
const o = parseFloat(t[2]), r = t[3].toLowerCase();
|
|
498
|
-
let
|
|
498
|
+
let a;
|
|
499
499
|
switch (r) {
|
|
500
500
|
case "sec":
|
|
501
501
|
case "secs":
|
|
502
502
|
case "second":
|
|
503
503
|
case "seconds":
|
|
504
504
|
case "s":
|
|
505
|
-
|
|
505
|
+
a = Math.round(o);
|
|
506
506
|
break;
|
|
507
507
|
case "minute":
|
|
508
508
|
case "minutes":
|
|
509
509
|
case "min":
|
|
510
510
|
case "mins":
|
|
511
511
|
case "m":
|
|
512
|
-
|
|
512
|
+
a = Math.round(o * ae);
|
|
513
513
|
break;
|
|
514
514
|
case "hour":
|
|
515
515
|
case "hours":
|
|
516
516
|
case "hr":
|
|
517
517
|
case "hrs":
|
|
518
518
|
case "h":
|
|
519
|
-
|
|
519
|
+
a = Math.round(o * ne);
|
|
520
520
|
break;
|
|
521
521
|
case "day":
|
|
522
522
|
case "days":
|
|
523
523
|
case "d":
|
|
524
|
-
|
|
524
|
+
a = Math.round(o * j);
|
|
525
525
|
break;
|
|
526
526
|
case "week":
|
|
527
527
|
case "weeks":
|
|
528
528
|
case "w":
|
|
529
|
-
|
|
529
|
+
a = Math.round(o * Me);
|
|
530
530
|
break;
|
|
531
531
|
default:
|
|
532
|
-
|
|
532
|
+
a = Math.round(o * Ve);
|
|
533
533
|
break;
|
|
534
534
|
}
|
|
535
|
-
return t[1] === "-" || t[4] === "ago" ? -
|
|
536
|
-
},
|
|
535
|
+
return t[1] === "-" || t[4] === "ago" ? -a : a;
|
|
536
|
+
}, F = (e) => e.toLowerCase().replace(/^application\//, ""), Ge = (e, t) => typeof e == "string" ? t.includes(e) : Array.isArray(e) ? t.some(Set.prototype.has.bind(new Set(e))) : !1, Be = (e, t, o = {}) => {
|
|
537
537
|
let r;
|
|
538
538
|
try {
|
|
539
539
|
r = JSON.parse(C.decode(t));
|
|
540
540
|
} catch {
|
|
541
541
|
}
|
|
542
|
-
if (!
|
|
543
|
-
throw new
|
|
544
|
-
const { typ:
|
|
545
|
-
if (
|
|
542
|
+
if (!W(r))
|
|
543
|
+
throw new ee("JWT Claims Set must be a top-level JSON object");
|
|
544
|
+
const { typ: a } = o;
|
|
545
|
+
if (a && (typeof e.typ != "string" || F(e.typ) !== F(a)))
|
|
546
546
|
throw new S('unexpected "typ" JWT header value', r, "typ", "check_failed");
|
|
547
|
-
const { requiredClaims:
|
|
548
|
-
p !== void 0 &&
|
|
549
|
-
for (const w of new Set(
|
|
547
|
+
const { requiredClaims: s = [], issuer: n, subject: i, audience: c, maxTokenAge: p } = o, y = [...s];
|
|
548
|
+
p !== void 0 && y.push("iat"), c !== void 0 && y.push("aud"), i !== void 0 && y.push("sub"), n !== void 0 && y.push("iss");
|
|
549
|
+
for (const w of new Set(y.reverse()))
|
|
550
550
|
if (!(w in r))
|
|
551
551
|
throw new S(`missing required "${w}" claim`, r, w, "missing");
|
|
552
|
-
if (
|
|
552
|
+
if (n && !(Array.isArray(n) ? n : [n]).includes(r.iss))
|
|
553
553
|
throw new S('unexpected "iss" claim value', r, "iss", "check_failed");
|
|
554
554
|
if (i && r.sub !== i)
|
|
555
555
|
throw new S('unexpected "sub" claim value', r, "sub", "check_failed");
|
|
556
|
-
if (c && !
|
|
556
|
+
if (c && !Ge(r.aud, typeof c == "string" ? [c] : c))
|
|
557
557
|
throw new S('unexpected "aud" claim value', r, "aud", "check_failed");
|
|
558
558
|
let l;
|
|
559
559
|
switch (typeof o.clockTolerance) {
|
|
560
560
|
case "string":
|
|
561
|
-
l =
|
|
561
|
+
l = B(o.clockTolerance);
|
|
562
562
|
break;
|
|
563
563
|
case "number":
|
|
564
564
|
l = o.clockTolerance;
|
|
@@ -569,50 +569,51 @@ const $e = (e) => Math.floor(e.getTime() / 1e3), oe = 60, ne = oe * 60, K = ne *
|
|
|
569
569
|
default:
|
|
570
570
|
throw new TypeError("Invalid clockTolerance option type");
|
|
571
571
|
}
|
|
572
|
-
const { currentDate:
|
|
572
|
+
const { currentDate: m } = o, h = je(m || /* @__PURE__ */ new Date());
|
|
573
573
|
if ((r.iat !== void 0 || p) && typeof r.iat != "number")
|
|
574
574
|
throw new S('"iat" claim must be a number', r, "iat", "invalid");
|
|
575
575
|
if (r.nbf !== void 0) {
|
|
576
576
|
if (typeof r.nbf != "number")
|
|
577
577
|
throw new S('"nbf" claim must be a number', r, "nbf", "invalid");
|
|
578
|
-
if (r.nbf >
|
|
578
|
+
if (r.nbf > h + l)
|
|
579
579
|
throw new S('"nbf" claim timestamp check failed', r, "nbf", "check_failed");
|
|
580
580
|
}
|
|
581
581
|
if (r.exp !== void 0) {
|
|
582
582
|
if (typeof r.exp != "number")
|
|
583
583
|
throw new S('"exp" claim must be a number', r, "exp", "invalid");
|
|
584
|
-
if (r.exp <=
|
|
585
|
-
throw new
|
|
584
|
+
if (r.exp <= h - l)
|
|
585
|
+
throw new V('"exp" claim timestamp check failed', r, "exp", "check_failed");
|
|
586
586
|
}
|
|
587
587
|
if (p) {
|
|
588
|
-
const w =
|
|
588
|
+
const w = h - r.iat, O = typeof p == "number" ? p : B(p);
|
|
589
589
|
if (w - l > O)
|
|
590
|
-
throw new
|
|
590
|
+
throw new V('"iat" claim timestamp check failed (too far in the past)', r, "iat", "check_failed");
|
|
591
591
|
if (w < 0 - l)
|
|
592
592
|
throw new S('"iat" claim timestamp check failed (it should be in the past)', r, "iat", "check_failed");
|
|
593
593
|
}
|
|
594
594
|
return r;
|
|
595
595
|
};
|
|
596
|
-
async function
|
|
596
|
+
async function Fe(e, t, o) {
|
|
597
597
|
var r;
|
|
598
|
-
const
|
|
599
|
-
if ((r =
|
|
600
|
-
throw new
|
|
601
|
-
const
|
|
602
|
-
return typeof t == "function" ? { ...
|
|
598
|
+
const a = await xe(e, t, o);
|
|
599
|
+
if ((r = a.protectedHeader.crit) != null && r.includes("b64") && a.protectedHeader.b64 === !1)
|
|
600
|
+
throw new ee("JWTs MUST NOT use unencoded payload");
|
|
601
|
+
const s = { payload: Be(a.protectedHeader, a.payload, o), protectedHeader: a.protectedHeader };
|
|
602
|
+
return typeof t == "function" ? { ...s, key: a.key } : s;
|
|
603
603
|
}
|
|
604
|
-
const
|
|
604
|
+
const qe = {
|
|
605
605
|
ID_TOKEN: "id_token",
|
|
606
606
|
ACCESS_TOKEN: "token",
|
|
607
607
|
ID_AND_ACCESS_TOKEN: "id_token token"
|
|
608
|
-
},
|
|
608
|
+
}, ze = {
|
|
609
609
|
CLIENT_ID: "X-Auth-ClientId"
|
|
610
|
-
},
|
|
610
|
+
}, _ = {
|
|
611
611
|
ALG: "RS256",
|
|
612
612
|
USER_ID_KEY: "_id",
|
|
613
613
|
TOKEN_ID_KEY: "__raw",
|
|
614
|
+
NONCE_KEY: "_nonce",
|
|
614
615
|
ISSUER: "gizmette.com"
|
|
615
|
-
},
|
|
616
|
+
}, Xe = `-----BEGIN PUBLIC KEY-----
|
|
616
617
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsF6i3Jd9fY/3COqCw/m7
|
|
617
618
|
w5PKyTYLGAI2I6SIIdpe6i6DOCbEkmDz7LdVsBqwNtVi8gvWYIj+8ol6rU3qu1v5
|
|
618
619
|
i1Jd45GSK4kzkVdgCmQZbM5ak0KI99q5wsrAIzUd+LRJ2HRvWtr5IYdsIiXaQjle
|
|
@@ -620,130 +621,156 @@ aMwPFOIcJH+rKfFgNcHLcaS5syp7zU1ANwZ+trgR+DifBr8TLVkBynmNeTyhDm2+
|
|
|
620
621
|
l0haqjMk0UoNPPE8iYBWUHQJJE1Dqstj65d6Eh5g64Pao25y4cmYJbKjiblIGEkE
|
|
621
622
|
sjqybA9mARAqh9k/eiIopecWSiffNQTwVQVd2I9ZH3BalhEXHlqFgrjz51kFqg81
|
|
622
623
|
awIDAQAB
|
|
623
|
-
-----END PUBLIC KEY-----`,
|
|
624
|
+
-----END PUBLIC KEY-----`, se = async (e, t) => {
|
|
624
625
|
try {
|
|
625
|
-
const o =
|
|
626
|
-
return await
|
|
627
|
-
issuer:
|
|
626
|
+
const o = _.ALG, r = await Oe(Xe, o);
|
|
627
|
+
return await Fe(e, r, {
|
|
628
|
+
issuer: _.ISSUER,
|
|
628
629
|
audience: t
|
|
629
630
|
});
|
|
630
631
|
} catch {
|
|
631
632
|
return;
|
|
632
633
|
}
|
|
633
634
|
};
|
|
634
|
-
function
|
|
635
|
+
function ie(e, t) {
|
|
635
636
|
window.dispatchEvent(new StorageEvent("storage", { key: e, newValue: t }));
|
|
636
637
|
}
|
|
637
|
-
const
|
|
638
|
+
const q = (e, t) => {
|
|
638
639
|
const o = JSON.stringify(
|
|
639
640
|
typeof t == "function" ? t() : t
|
|
640
641
|
);
|
|
641
|
-
window.localStorage.setItem(e, o),
|
|
642
|
-
},
|
|
643
|
-
window.localStorage.removeItem(e),
|
|
644
|
-
},
|
|
645
|
-
function
|
|
642
|
+
window.localStorage.setItem(e, o), ie(e, o);
|
|
643
|
+
}, Qe = (e) => {
|
|
644
|
+
window.localStorage.removeItem(e), ie(e, null);
|
|
645
|
+
}, z = (e) => window.localStorage.getItem(e), Ze = (e) => (window.addEventListener("storage", e), () => window.removeEventListener("storage", e));
|
|
646
|
+
function U({
|
|
646
647
|
key: e,
|
|
647
648
|
initialValue: t
|
|
648
649
|
}) {
|
|
649
|
-
const o = () =>
|
|
650
|
-
|
|
650
|
+
const o = () => z(e), r = I.useSyncExternalStore(
|
|
651
|
+
Ze,
|
|
651
652
|
o
|
|
652
|
-
),
|
|
653
|
+
), a = I.useCallback(
|
|
653
654
|
(i) => {
|
|
654
655
|
try {
|
|
655
656
|
const c = typeof i == "function" ? i(JSON.parse(r)) : i;
|
|
656
|
-
c == null ?
|
|
657
|
+
c == null ? Qe(e) : q(e, c);
|
|
657
658
|
} catch (c) {
|
|
658
659
|
console.warn(c);
|
|
659
660
|
}
|
|
660
661
|
},
|
|
661
662
|
[e, r]
|
|
662
|
-
),
|
|
663
|
-
|
|
664
|
-
}, [t,
|
|
665
|
-
|
|
666
|
-
}, [
|
|
663
|
+
), s = I.useCallback(() => {
|
|
664
|
+
a(t);
|
|
665
|
+
}, [t, a]), n = I.useCallback(() => {
|
|
666
|
+
a(null);
|
|
667
|
+
}, [a]);
|
|
667
668
|
return I.useEffect(() => {
|
|
668
669
|
try {
|
|
669
|
-
|
|
670
|
+
z(e) === null && typeof t < "u" && q(e, t);
|
|
670
671
|
} catch (i) {
|
|
671
672
|
console.warn(i);
|
|
672
673
|
}
|
|
673
|
-
}, [e, t]), [r ? JSON.parse(r) : null,
|
|
674
|
+
}, [e, t]), [r ? JSON.parse(r) : null, a, s, n];
|
|
674
675
|
}
|
|
675
|
-
const H = "Oops! It looks like your session has expired. For your security, please log in again to continue.", ze = "Your session has been successfully terminated.", Xe = "Login failed. Please try again.", Qe = "You forgot to wrap your component in <AuthProvider>.", Y = {
|
|
676
|
-
dev: "https://auth.gizmette.local.com:3003",
|
|
677
|
-
prod: "https://mylogin.gizmette.com"
|
|
678
|
-
}, q = "@@auth@@";
|
|
679
676
|
var u = [];
|
|
680
|
-
for (var
|
|
681
|
-
u.push((
|
|
682
|
-
function
|
|
677
|
+
for (var H = 0; H < 256; ++H)
|
|
678
|
+
u.push((H + 256).toString(16).slice(1));
|
|
679
|
+
function et(e, t = 0) {
|
|
683
680
|
return (u[e[t + 0]] + u[e[t + 1]] + u[e[t + 2]] + u[e[t + 3]] + "-" + u[e[t + 4]] + u[e[t + 5]] + "-" + u[e[t + 6]] + u[e[t + 7]] + "-" + u[e[t + 8]] + u[e[t + 9]] + "-" + u[e[t + 10]] + u[e[t + 11]] + u[e[t + 12]] + u[e[t + 13]] + u[e[t + 14]] + u[e[t + 15]]).toLowerCase();
|
|
684
681
|
}
|
|
685
|
-
var k,
|
|
686
|
-
function
|
|
682
|
+
var k, tt = new Uint8Array(16);
|
|
683
|
+
function rt() {
|
|
687
684
|
if (!k && (k = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !k))
|
|
688
685
|
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
689
|
-
return k(
|
|
686
|
+
return k(tt);
|
|
690
687
|
}
|
|
691
|
-
var
|
|
692
|
-
const
|
|
693
|
-
randomUUID:
|
|
688
|
+
var ot = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
|
|
689
|
+
const X = {
|
|
690
|
+
randomUUID: ot
|
|
694
691
|
};
|
|
695
|
-
function
|
|
696
|
-
if (
|
|
697
|
-
return
|
|
692
|
+
function at(e, t, o) {
|
|
693
|
+
if (X.randomUUID && !t && !e)
|
|
694
|
+
return X.randomUUID();
|
|
698
695
|
e = e || {};
|
|
699
|
-
var r = e.random || (e.rng ||
|
|
700
|
-
return r[6] = r[6] & 15 | 64, r[8] = r[8] & 63 | 128,
|
|
696
|
+
var r = e.random || (e.rng || rt)();
|
|
697
|
+
return r[6] = r[6] & 15 | 64, r[8] = r[8] & 63 | 128, et(r);
|
|
701
698
|
}
|
|
702
|
-
const
|
|
699
|
+
const L = "Oops! It looks like your session has expired. For your security, please log in again to continue.", nt = "Your session has been successfully terminated.", st = "Login failed. Please try again.", it = "You forgot to wrap your component in <AuthProvider>.", Q = {
|
|
700
|
+
dev: "https://auth.gizmette.local.com:3003",
|
|
701
|
+
prod: "https://mylogin.gizmette.com"
|
|
702
|
+
}, $ = "@@auth@@", ct = process.env.NODE_ENV === "production", ut = !ct, ce = {
|
|
703
|
+
AUTHENTICATE: "authenticate",
|
|
704
|
+
LOGOUT: "logout"
|
|
705
|
+
}, ue = async ({ type: e, params: t = {} }) => {
|
|
703
706
|
try {
|
|
704
|
-
const
|
|
705
|
-
|
|
707
|
+
const o = await fetch(
|
|
708
|
+
ut ? `${Q.dev}/${e}` : `${Q.prod}/${e}`,
|
|
706
709
|
{
|
|
707
710
|
credentials: "include",
|
|
708
711
|
method: "POST",
|
|
709
712
|
headers: {
|
|
710
713
|
"Content-Type": "application/json",
|
|
711
|
-
[
|
|
714
|
+
[ze.CLIENT_ID]: `${t.clientId}`
|
|
712
715
|
},
|
|
713
|
-
body: JSON.stringify(
|
|
716
|
+
body: JSON.stringify(t)
|
|
714
717
|
}
|
|
715
718
|
);
|
|
716
719
|
if (o.status !== 200)
|
|
717
720
|
return { status: o.status, data: [] };
|
|
718
|
-
const { data: r, errors:
|
|
719
|
-
return
|
|
721
|
+
const { data: r, errors: a } = await o.json();
|
|
722
|
+
return {
|
|
720
723
|
status: o.status,
|
|
721
724
|
data: r,
|
|
722
|
-
errors:
|
|
725
|
+
errors: a
|
|
726
|
+
};
|
|
727
|
+
} catch (o) {
|
|
728
|
+
return console.error(o), { status: 500, data: [] };
|
|
729
|
+
}
|
|
730
|
+
}, J = async ({
|
|
731
|
+
idToken: e,
|
|
732
|
+
accessToken: t,
|
|
733
|
+
clientId: o
|
|
734
|
+
}) => {
|
|
735
|
+
try {
|
|
736
|
+
return {
|
|
737
|
+
status: (await ue({
|
|
738
|
+
type: ce.LOGOUT,
|
|
739
|
+
params: {
|
|
740
|
+
idToken: e,
|
|
741
|
+
accessToken: t,
|
|
742
|
+
clientId: o
|
|
743
|
+
}
|
|
744
|
+
})).status === 200
|
|
745
|
+
};
|
|
746
|
+
} catch {
|
|
747
|
+
return {
|
|
748
|
+
status: !1
|
|
723
749
|
};
|
|
724
|
-
} catch (t) {
|
|
725
|
-
return console.error(t), { status: 500, data: [] };
|
|
726
750
|
}
|
|
727
|
-
},
|
|
751
|
+
}, dt = async ({
|
|
728
752
|
username: e,
|
|
729
753
|
password: t,
|
|
730
754
|
clientId: o,
|
|
731
|
-
|
|
755
|
+
nonce: r,
|
|
756
|
+
sessionExpiration: a
|
|
732
757
|
}) => {
|
|
733
758
|
try {
|
|
734
|
-
const
|
|
759
|
+
const s = await ue({
|
|
760
|
+
type: ce.AUTHENTICATE,
|
|
735
761
|
params: {
|
|
736
|
-
type:
|
|
762
|
+
type: qe.ID_AND_ACCESS_TOKEN,
|
|
737
763
|
username: e,
|
|
738
764
|
password: t,
|
|
739
|
-
sessionExpiration:
|
|
740
|
-
clientId: o
|
|
765
|
+
sessionExpiration: a,
|
|
766
|
+
clientId: o,
|
|
767
|
+
nonce: r
|
|
741
768
|
}
|
|
742
|
-
}),
|
|
743
|
-
return
|
|
744
|
-
idToken:
|
|
745
|
-
accessToken:
|
|
746
|
-
userId:
|
|
769
|
+
}), n = await se(s.data.idToken, o);
|
|
770
|
+
return n && n.payload[_.USER_ID_KEY] !== "" && n.payload[_.NONCE_KEY] === r ? {
|
|
771
|
+
idToken: s.data.idToken,
|
|
772
|
+
accessToken: s.data.accessToken,
|
|
773
|
+
userId: n.payload[_.USER_ID_KEY],
|
|
747
774
|
status: !0
|
|
748
775
|
} : {
|
|
749
776
|
status: !1
|
|
@@ -753,93 +780,112 @@ const nt = process.env.NODE_ENV === "production", at = !nt, st = async ({ params
|
|
|
753
780
|
status: !1
|
|
754
781
|
};
|
|
755
782
|
}
|
|
756
|
-
}
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
return X(() => {
|
|
760
|
-
t.current = e;
|
|
761
|
-
}), t.current;
|
|
762
|
-
}
|
|
763
|
-
const L = () => {
|
|
764
|
-
throw new Error(Qe);
|
|
765
|
-
}, ie = le({
|
|
783
|
+
}, K = () => {
|
|
784
|
+
throw new Error(it);
|
|
785
|
+
}, de = fe({
|
|
766
786
|
isAuthenticated: !1,
|
|
767
787
|
isLoading: !1,
|
|
768
|
-
login:
|
|
769
|
-
logout:
|
|
770
|
-
getAccessToken:
|
|
788
|
+
login: K,
|
|
789
|
+
logout: K,
|
|
790
|
+
getAccessToken: K,
|
|
771
791
|
logoutReason: "",
|
|
772
792
|
idTokenClaims: null
|
|
773
|
-
}),
|
|
793
|
+
}), yt = ({
|
|
774
794
|
children: e,
|
|
775
795
|
sessionExpiration: t,
|
|
776
796
|
clientId: o
|
|
777
797
|
}) => {
|
|
778
|
-
const [r,
|
|
779
|
-
key: `${
|
|
780
|
-
}), [
|
|
781
|
-
key: `${
|
|
782
|
-
}), [p,
|
|
798
|
+
const [r, a, , s] = U({
|
|
799
|
+
key: `${$}::${o}::@@user@@`
|
|
800
|
+
}), [n, i, , c] = U({
|
|
801
|
+
key: `${$}::${o}::@@access@@`
|
|
802
|
+
}), [, p, , y] = U({
|
|
803
|
+
key: `${$}::${o}::@@nonce@@`
|
|
804
|
+
}), [l, m] = ye({
|
|
783
805
|
isLoading: !0,
|
|
784
806
|
isAuthenticated: !1,
|
|
785
807
|
logoutReason: "",
|
|
786
808
|
userId: "",
|
|
787
809
|
idTokenClaims: null
|
|
788
|
-
}),
|
|
789
|
-
(
|
|
790
|
-
|
|
810
|
+
}), h = me(
|
|
811
|
+
(f) => {
|
|
812
|
+
m({
|
|
791
813
|
isLoading: !1,
|
|
792
814
|
isAuthenticated: !1,
|
|
793
|
-
logoutReason:
|
|
815
|
+
logoutReason: f || L,
|
|
794
816
|
userId: "",
|
|
795
817
|
idTokenClaims: null
|
|
796
|
-
}),
|
|
818
|
+
}), s(), c(), y();
|
|
797
819
|
},
|
|
798
|
-
[
|
|
820
|
+
[s, c, y]
|
|
799
821
|
);
|
|
800
|
-
|
|
801
|
-
l
|
|
822
|
+
we(() => {
|
|
823
|
+
l.isLoading && r !== null && (async () => {
|
|
802
824
|
try {
|
|
803
|
-
const
|
|
804
|
-
|
|
825
|
+
const f = await se(r, o);
|
|
826
|
+
f && f.payload[_.USER_ID_KEY] !== "" ? m({
|
|
805
827
|
isLoading: !1,
|
|
806
828
|
isAuthenticated: !0,
|
|
807
829
|
logoutReason: "",
|
|
808
|
-
userId:
|
|
830
|
+
userId: f.payload[_.USER_ID_KEY],
|
|
809
831
|
idTokenClaims: {
|
|
810
|
-
...
|
|
811
|
-
[
|
|
832
|
+
...f == null ? void 0 : f.payload,
|
|
833
|
+
[_.TOKEN_ID_KEY]: r
|
|
812
834
|
}
|
|
813
|
-
}) : h(
|
|
835
|
+
}) : (h(L), await J({
|
|
836
|
+
idToken: r,
|
|
837
|
+
accessToken: n,
|
|
838
|
+
clientId: o
|
|
839
|
+
}));
|
|
814
840
|
} catch {
|
|
815
|
-
h(
|
|
841
|
+
h(L), await J({
|
|
842
|
+
idToken: r,
|
|
843
|
+
accessToken: n,
|
|
844
|
+
clientId: o
|
|
845
|
+
});
|
|
816
846
|
}
|
|
817
847
|
})();
|
|
818
|
-
}, [
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
848
|
+
}, [
|
|
849
|
+
l.isLoading,
|
|
850
|
+
n,
|
|
851
|
+
r,
|
|
852
|
+
o,
|
|
853
|
+
h
|
|
854
|
+
]);
|
|
855
|
+
const w = async (f, he) => {
|
|
856
|
+
const M = at();
|
|
857
|
+
p(M);
|
|
858
|
+
const T = await dt({
|
|
859
|
+
username: f,
|
|
860
|
+
password: he,
|
|
823
861
|
clientId: o,
|
|
824
|
-
sessionExpiration: t
|
|
862
|
+
sessionExpiration: t,
|
|
863
|
+
nonce: M
|
|
825
864
|
});
|
|
826
|
-
return
|
|
865
|
+
return T.status ? (a(T.idToken), i(T.accessToken), m({
|
|
827
866
|
isLoading: !1,
|
|
828
867
|
isAuthenticated: !0,
|
|
829
|
-
userId:
|
|
830
|
-
}), !0) : (h(
|
|
831
|
-
},
|
|
832
|
-
h(
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
868
|
+
userId: T.userId
|
|
869
|
+
}), !0) : (h(st), !1);
|
|
870
|
+
}, O = async () => {
|
|
871
|
+
h(nt), await J({
|
|
872
|
+
idToken: r,
|
|
873
|
+
accessToken: n,
|
|
874
|
+
clientId: o
|
|
875
|
+
});
|
|
876
|
+
}, le = () => {
|
|
877
|
+
if (l.isAuthenticated && n)
|
|
878
|
+
return n;
|
|
879
|
+
};
|
|
880
|
+
return /* @__PURE__ */ pe(
|
|
881
|
+
de.Provider,
|
|
836
882
|
{
|
|
837
|
-
value: { ...
|
|
883
|
+
value: { ...l, login: w, logout: O, getAccessToken: le },
|
|
838
884
|
children: e
|
|
839
885
|
}
|
|
840
886
|
);
|
|
841
|
-
},
|
|
887
|
+
}, mt = (e = de) => Se(e);
|
|
842
888
|
export {
|
|
843
|
-
|
|
844
|
-
|
|
889
|
+
yt as AuthProvider,
|
|
890
|
+
mt as useAuth
|
|
845
891
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@versini/auth-provider",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Arno Versini",
|
|
6
6
|
"publishConfig": {
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
"react-dom": "18.3.1"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@versini/auth-common": "2.
|
|
47
|
+
"@versini/auth-common": "2.6.0",
|
|
48
48
|
"@versini/ui-hooks": "4.0.0",
|
|
49
49
|
"jose": "5.4.1",
|
|
50
50
|
"uuid": "10.0.0"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "7d1b235e792243f979ae462cca442c9ae2a3c180"
|
|
53
53
|
}
|