@absolutejs/auth 0.12.0 → 0.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +507 -13
- package/dist/index.js.map +12 -12
- package/dist/src/authorize.d.ts +2 -2
- package/dist/src/callback.d.ts +2 -2
- package/dist/src/index.d.ts +1 -1
- package/dist/src/profile.d.ts +2 -2
- package/dist/src/refresh.d.ts +2 -2
- package/dist/src/revoke.d.ts +3 -3
- package/dist/src/signout.d.ts +1 -1
- package/dist/src/status.d.ts +1 -1
- package/dist/src/types.d.ts +28 -32
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -128,6 +128,113 @@ var createRandomBase64UrlGenerator = (length) => () => {
|
|
|
128
128
|
var generateCodeVerifier = createRandomBase64UrlGenerator(NUM_GENERATOR_BYTES);
|
|
129
129
|
var generateState = createRandomBase64UrlGenerator(NUM_GENERATOR_BYTES);
|
|
130
130
|
var base64Url = (input) => encodeBase64(input).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
131
|
+
var anilistProfileQuery = `query {
|
|
132
|
+
Viewer {
|
|
133
|
+
id
|
|
134
|
+
name
|
|
135
|
+
about
|
|
136
|
+
avatar {
|
|
137
|
+
large
|
|
138
|
+
medium
|
|
139
|
+
}
|
|
140
|
+
bannerImage
|
|
141
|
+
siteUrl
|
|
142
|
+
createdAt
|
|
143
|
+
updatedAt
|
|
144
|
+
donatorTier
|
|
145
|
+
donatorBadge
|
|
146
|
+
unreadNotificationCount
|
|
147
|
+
options {
|
|
148
|
+
titleLanguage
|
|
149
|
+
displayAdultContent
|
|
150
|
+
airingNotifications
|
|
151
|
+
profileColor
|
|
152
|
+
activityMergeTime
|
|
153
|
+
staffNameLanguage
|
|
154
|
+
}
|
|
155
|
+
mediaListOptions {
|
|
156
|
+
scoreFormat
|
|
157
|
+
rowOrder
|
|
158
|
+
animeList {
|
|
159
|
+
sectionOrder
|
|
160
|
+
customLists
|
|
161
|
+
advancedScoringEnabled
|
|
162
|
+
}
|
|
163
|
+
mangaList {
|
|
164
|
+
sectionOrder
|
|
165
|
+
customLists
|
|
166
|
+
advancedScoringEnabled
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
statistics {
|
|
170
|
+
anime {
|
|
171
|
+
count
|
|
172
|
+
meanScore
|
|
173
|
+
minutesWatched
|
|
174
|
+
episodesWatched
|
|
175
|
+
}
|
|
176
|
+
manga {
|
|
177
|
+
count
|
|
178
|
+
meanScore
|
|
179
|
+
chaptersRead
|
|
180
|
+
volumesRead
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
favourites {
|
|
184
|
+
anime {
|
|
185
|
+
nodes {
|
|
186
|
+
id
|
|
187
|
+
title {
|
|
188
|
+
romaji
|
|
189
|
+
english
|
|
190
|
+
}
|
|
191
|
+
siteUrl
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
manga {
|
|
195
|
+
nodes {
|
|
196
|
+
id
|
|
197
|
+
title {
|
|
198
|
+
romaji
|
|
199
|
+
english
|
|
200
|
+
}
|
|
201
|
+
siteUrl
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
characters {
|
|
205
|
+
nodes {
|
|
206
|
+
id
|
|
207
|
+
name {
|
|
208
|
+
full
|
|
209
|
+
}
|
|
210
|
+
image {
|
|
211
|
+
large
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
staff {
|
|
216
|
+
nodes {
|
|
217
|
+
id
|
|
218
|
+
name {
|
|
219
|
+
full
|
|
220
|
+
}
|
|
221
|
+
image {
|
|
222
|
+
large
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
studios {
|
|
227
|
+
nodes {
|
|
228
|
+
id
|
|
229
|
+
name
|
|
230
|
+
siteUrl
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
isFollower
|
|
235
|
+
isFollowing
|
|
236
|
+
}
|
|
237
|
+
}`;
|
|
131
238
|
var isValidProviderOption = (option) => Object.hasOwn(providers, option);
|
|
132
239
|
var isRefreshableProviderOption = (option) => {
|
|
133
240
|
if (!isValidProviderOption(option))
|
|
@@ -167,10 +274,29 @@ var hasClientSecret = (credentials) => {
|
|
|
167
274
|
const secret = Reflect.get(credentials, "clientSecret");
|
|
168
275
|
return typeof secret === "string";
|
|
169
276
|
};
|
|
277
|
+
var isObject = (x) => x !== null && typeof x === "object" && !Array.isArray(x) && Object.prototype.toString.call(x) === "[object Object]";
|
|
278
|
+
var extractPropFromIdentity = (identity, keys) => {
|
|
279
|
+
let value = identity;
|
|
280
|
+
for (const key of keys) {
|
|
281
|
+
if (!isObject(value)) {
|
|
282
|
+
throw new Error(`Invalid identity data shape: expected object, got ${typeof value}`);
|
|
283
|
+
}
|
|
284
|
+
value = value[key];
|
|
285
|
+
}
|
|
286
|
+
return value;
|
|
287
|
+
};
|
|
288
|
+
var extractSubFromOIDCIdentity = (identity) => {
|
|
289
|
+
const sub = extractPropFromIdentity(identity, ["sub"]);
|
|
290
|
+
if (typeof sub !== "string") {
|
|
291
|
+
throw new Error("Invalid identity data shape");
|
|
292
|
+
}
|
|
293
|
+
return sub;
|
|
294
|
+
};
|
|
170
295
|
var defineProviders = (providers2) => providers2;
|
|
171
296
|
var providers = defineProviders({
|
|
172
297
|
"42": {
|
|
173
298
|
authorizationUrl: "https://api.intra.42.fr/oauth/authorize",
|
|
299
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
174
300
|
isOIDC: false,
|
|
175
301
|
isRefreshable: true,
|
|
176
302
|
profileRequest: {
|
|
@@ -188,6 +314,7 @@ var providers = defineProviders({
|
|
|
188
314
|
},
|
|
189
315
|
amazoncognito: {
|
|
190
316
|
authorizationUrl: "https://${domain}/oauth2/authorize",
|
|
317
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
191
318
|
isOIDC: true,
|
|
192
319
|
isRefreshable: true,
|
|
193
320
|
PKCEMethod: "S256",
|
|
@@ -212,12 +339,23 @@ var providers = defineProviders({
|
|
|
212
339
|
},
|
|
213
340
|
anilist: {
|
|
214
341
|
authorizationUrl: "https://anilist.co/api/v2/oauth/authorize",
|
|
342
|
+
extractSubjectFromIdentity(identity) {
|
|
343
|
+
const subject = extractPropFromIdentity(identity, [
|
|
344
|
+
"data",
|
|
345
|
+
"Viewer",
|
|
346
|
+
"id"
|
|
347
|
+
]);
|
|
348
|
+
if (typeof subject !== "number") {
|
|
349
|
+
throw new Error("Invalid identity data shape");
|
|
350
|
+
}
|
|
351
|
+
return subject;
|
|
352
|
+
},
|
|
215
353
|
isOIDC: false,
|
|
216
354
|
isRefreshable: true,
|
|
217
355
|
profileRequest: {
|
|
218
356
|
authIn: "header",
|
|
219
357
|
body: {
|
|
220
|
-
query:
|
|
358
|
+
query: anilistProfileQuery
|
|
221
359
|
},
|
|
222
360
|
encoding: "application/json",
|
|
223
361
|
headers: {
|
|
@@ -236,6 +374,7 @@ var providers = defineProviders({
|
|
|
236
374
|
},
|
|
237
375
|
apple: {
|
|
238
376
|
authorizationUrl: "https://appleid.apple.com/auth/authorize",
|
|
377
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
239
378
|
isOIDC: true,
|
|
240
379
|
isRefreshable: true,
|
|
241
380
|
PKCEMethod: "S256",
|
|
@@ -257,6 +396,13 @@ var providers = defineProviders({
|
|
|
257
396
|
createAuthorizationURLSearchParams: {
|
|
258
397
|
audience: "api.atlassian.com"
|
|
259
398
|
},
|
|
399
|
+
extractSubjectFromIdentity(identity) {
|
|
400
|
+
const subject = extractPropFromIdentity(identity, ["account_id"]);
|
|
401
|
+
if (typeof subject !== "string") {
|
|
402
|
+
throw new Error("Invalid identity data shape");
|
|
403
|
+
}
|
|
404
|
+
return subject;
|
|
405
|
+
},
|
|
260
406
|
isOIDC: false,
|
|
261
407
|
isRefreshable: true,
|
|
262
408
|
profileRequest: {
|
|
@@ -274,6 +420,7 @@ var providers = defineProviders({
|
|
|
274
420
|
},
|
|
275
421
|
auth0: {
|
|
276
422
|
authorizationUrl: (config) => `https://${config.domain}/authorize`,
|
|
423
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
277
424
|
isOIDC: true,
|
|
278
425
|
isRefreshable: true,
|
|
279
426
|
PKCEMethod: "S256",
|
|
@@ -301,6 +448,7 @@ var providers = defineProviders({
|
|
|
301
448
|
},
|
|
302
449
|
authentik: {
|
|
303
450
|
authorizationUrl: (config) => `https://${config.baseURL}/oauth/authorize`,
|
|
451
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
304
452
|
isOIDC: true,
|
|
305
453
|
isRefreshable: true,
|
|
306
454
|
PKCEMethod: "S256",
|
|
@@ -319,6 +467,7 @@ var providers = defineProviders({
|
|
|
319
467
|
},
|
|
320
468
|
autodesk: {
|
|
321
469
|
authorizationUrl: "https://developer.api.autodesk.com/authentication/v2/authorize",
|
|
470
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
322
471
|
isOIDC: true,
|
|
323
472
|
isRefreshable: true,
|
|
324
473
|
PKCEMethod: "S256",
|
|
@@ -337,6 +486,7 @@ var providers = defineProviders({
|
|
|
337
486
|
},
|
|
338
487
|
battlenet: {
|
|
339
488
|
authorizationUrl: "https://oauth.battle.net/authorize",
|
|
489
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
340
490
|
isOIDC: true,
|
|
341
491
|
isRefreshable: false,
|
|
342
492
|
profileRequest: {
|
|
@@ -354,6 +504,13 @@ var providers = defineProviders({
|
|
|
354
504
|
},
|
|
355
505
|
bitbucket: {
|
|
356
506
|
authorizationUrl: "https://bitbucket.org/site/oauth2/authorize",
|
|
507
|
+
extractSubjectFromIdentity(identity) {
|
|
508
|
+
const subject = extractPropFromIdentity(identity, ["uuid"]);
|
|
509
|
+
if (typeof subject !== "string") {
|
|
510
|
+
throw new Error("Invalid identity data shape");
|
|
511
|
+
}
|
|
512
|
+
return subject;
|
|
513
|
+
},
|
|
357
514
|
isOIDC: false,
|
|
358
515
|
isRefreshable: true,
|
|
359
516
|
profileRequest: {
|
|
@@ -371,6 +528,13 @@ var providers = defineProviders({
|
|
|
371
528
|
},
|
|
372
529
|
box: {
|
|
373
530
|
authorizationUrl: "https://account.box.com/api/oauth2/authorize",
|
|
531
|
+
extractSubjectFromIdentity(identity) {
|
|
532
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
533
|
+
if (typeof subject !== "string") {
|
|
534
|
+
throw new Error("Invalid identity data shape");
|
|
535
|
+
}
|
|
536
|
+
return subject;
|
|
537
|
+
},
|
|
374
538
|
isOIDC: false,
|
|
375
539
|
isRefreshable: true,
|
|
376
540
|
profileRequest: {
|
|
@@ -394,6 +558,16 @@ var providers = defineProviders({
|
|
|
394
558
|
},
|
|
395
559
|
bungie: {
|
|
396
560
|
authorizationUrl: "https://www.bungie.net/en/OAuth/Authorize",
|
|
561
|
+
extractSubjectFromIdentity(identity) {
|
|
562
|
+
const subject = extractPropFromIdentity(identity, [
|
|
563
|
+
"Response",
|
|
564
|
+
"membershipId"
|
|
565
|
+
]);
|
|
566
|
+
if (typeof subject !== "string") {
|
|
567
|
+
throw new Error("Invalid identity data shape");
|
|
568
|
+
}
|
|
569
|
+
return subject;
|
|
570
|
+
},
|
|
397
571
|
isOIDC: false,
|
|
398
572
|
isRefreshable: true,
|
|
399
573
|
profileRequest: {
|
|
@@ -414,6 +588,13 @@ var providers = defineProviders({
|
|
|
414
588
|
},
|
|
415
589
|
coinbase: {
|
|
416
590
|
authorizationUrl: "https://www.coinbase.com/oauth/authorize",
|
|
591
|
+
extractSubjectFromIdentity(identity) {
|
|
592
|
+
const subject = extractPropFromIdentity(identity, ["data", "id"]);
|
|
593
|
+
if (typeof subject !== "string") {
|
|
594
|
+
throw new Error("Invalid identity data shape");
|
|
595
|
+
}
|
|
596
|
+
return subject;
|
|
597
|
+
},
|
|
417
598
|
isOIDC: false,
|
|
418
599
|
isRefreshable: true,
|
|
419
600
|
profileRequest: {
|
|
@@ -431,7 +612,8 @@ var providers = defineProviders({
|
|
|
431
612
|
},
|
|
432
613
|
discord: {
|
|
433
614
|
authorizationUrl: "https://discord.com/api/oauth2/authorize",
|
|
434
|
-
|
|
615
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
616
|
+
isOIDC: true,
|
|
435
617
|
isRefreshable: true,
|
|
436
618
|
PKCEMethod: "S256",
|
|
437
619
|
profileRequest: {
|
|
@@ -449,6 +631,13 @@ var providers = defineProviders({
|
|
|
449
631
|
},
|
|
450
632
|
donationalerts: {
|
|
451
633
|
authorizationUrl: "https://www.donationalerts.com/oauth/authorize",
|
|
634
|
+
extractSubjectFromIdentity(identity) {
|
|
635
|
+
const subject = extractPropFromIdentity(identity, ["data", "id"]);
|
|
636
|
+
if (typeof subject !== "number") {
|
|
637
|
+
throw new Error("Invalid identity data shape");
|
|
638
|
+
}
|
|
639
|
+
return subject;
|
|
640
|
+
},
|
|
452
641
|
isOIDC: false,
|
|
453
642
|
isRefreshable: true,
|
|
454
643
|
profileRequest: {
|
|
@@ -466,6 +655,13 @@ var providers = defineProviders({
|
|
|
466
655
|
},
|
|
467
656
|
dribbble: {
|
|
468
657
|
authorizationUrl: "https://dribbble.com/oauth/authorize",
|
|
658
|
+
extractSubjectFromIdentity(identity) {
|
|
659
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
660
|
+
if (typeof subject !== "number") {
|
|
661
|
+
throw new Error("Invalid identity data shape");
|
|
662
|
+
}
|
|
663
|
+
return subject;
|
|
664
|
+
},
|
|
469
665
|
isOIDC: false,
|
|
470
666
|
isRefreshable: false,
|
|
471
667
|
profileRequest: {
|
|
@@ -483,6 +679,13 @@ var providers = defineProviders({
|
|
|
483
679
|
},
|
|
484
680
|
dropbox: {
|
|
485
681
|
authorizationUrl: "https://www.dropbox.com/oauth2/authorize",
|
|
682
|
+
extractSubjectFromIdentity(identity) {
|
|
683
|
+
const subject = extractPropFromIdentity(identity, ["account_id"]);
|
|
684
|
+
if (typeof subject !== "string") {
|
|
685
|
+
throw new Error("Invalid identity data shape");
|
|
686
|
+
}
|
|
687
|
+
return subject;
|
|
688
|
+
},
|
|
486
689
|
isOIDC: false,
|
|
487
690
|
isRefreshable: true,
|
|
488
691
|
profileRequest: {
|
|
@@ -505,6 +708,13 @@ var providers = defineProviders({
|
|
|
505
708
|
},
|
|
506
709
|
epicgames: {
|
|
507
710
|
authorizationUrl: "https://www.epicgames.com/id/authorize",
|
|
711
|
+
extractSubjectFromIdentity(identity) {
|
|
712
|
+
const subject = extractPropFromIdentity(identity, ["account_id"]);
|
|
713
|
+
if (typeof subject !== "string") {
|
|
714
|
+
throw new Error("Invalid identity data shape");
|
|
715
|
+
}
|
|
716
|
+
return subject;
|
|
717
|
+
},
|
|
508
718
|
isOIDC: false,
|
|
509
719
|
isRefreshable: true,
|
|
510
720
|
profileRequest: {
|
|
@@ -522,6 +732,17 @@ var providers = defineProviders({
|
|
|
522
732
|
},
|
|
523
733
|
etsy: {
|
|
524
734
|
authorizationUrl: "https://www.etsy.com/oauth/connect",
|
|
735
|
+
extractSubjectFromIdentity(identity) {
|
|
736
|
+
const subject = extractPropFromIdentity(identity, [
|
|
737
|
+
"results",
|
|
738
|
+
"0",
|
|
739
|
+
"user_id"
|
|
740
|
+
]);
|
|
741
|
+
if (typeof subject !== "number") {
|
|
742
|
+
throw new Error("Invalid identity data shape");
|
|
743
|
+
}
|
|
744
|
+
return subject;
|
|
745
|
+
},
|
|
525
746
|
isOIDC: false,
|
|
526
747
|
isRefreshable: true,
|
|
527
748
|
profileRequest: {
|
|
@@ -539,6 +760,7 @@ var providers = defineProviders({
|
|
|
539
760
|
},
|
|
540
761
|
facebook: {
|
|
541
762
|
authorizationUrl: "https://www.facebook.com/v16.0/dialog/oauth",
|
|
763
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
542
764
|
isOIDC: true,
|
|
543
765
|
isRefreshable: false,
|
|
544
766
|
PKCEMethod: "S256",
|
|
@@ -558,6 +780,15 @@ var providers = defineProviders({
|
|
|
558
780
|
},
|
|
559
781
|
figma: {
|
|
560
782
|
authorizationUrl: "https://www.figma.com/oauth",
|
|
783
|
+
extractSubjectFromIdentity(identity) {
|
|
784
|
+
const subject = extractPropFromIdentity(identity, [
|
|
785
|
+
"user_id_string"
|
|
786
|
+
]);
|
|
787
|
+
if (typeof subject !== "string") {
|
|
788
|
+
throw new Error("Invalid identity data shape");
|
|
789
|
+
}
|
|
790
|
+
return subject;
|
|
791
|
+
},
|
|
561
792
|
isOIDC: false,
|
|
562
793
|
isRefreshable: true,
|
|
563
794
|
PKCEMethod: "S256",
|
|
@@ -576,6 +807,7 @@ var providers = defineProviders({
|
|
|
576
807
|
},
|
|
577
808
|
gitea: {
|
|
578
809
|
authorizationUrl: (config) => `${config.baseURL}/login/oauth/authorize`,
|
|
810
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
579
811
|
isOIDC: true,
|
|
580
812
|
isRefreshable: true,
|
|
581
813
|
PKCEMethod: "S256",
|
|
@@ -594,6 +826,13 @@ var providers = defineProviders({
|
|
|
594
826
|
},
|
|
595
827
|
github: {
|
|
596
828
|
authorizationUrl: "https://github.com/login/oauth/authorize",
|
|
829
|
+
extractSubjectFromIdentity(identity) {
|
|
830
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
831
|
+
if (typeof subject !== "number") {
|
|
832
|
+
throw new Error("Invalid identity data shape");
|
|
833
|
+
}
|
|
834
|
+
return subject;
|
|
835
|
+
},
|
|
597
836
|
isOIDC: false,
|
|
598
837
|
isRefreshable: false,
|
|
599
838
|
profileRequest: {
|
|
@@ -611,6 +850,7 @@ var providers = defineProviders({
|
|
|
611
850
|
},
|
|
612
851
|
gitlab: {
|
|
613
852
|
authorizationUrl: (config) => `${config.baseURL}/oauth/authorize`,
|
|
853
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
614
854
|
isOIDC: true,
|
|
615
855
|
isRefreshable: true,
|
|
616
856
|
PKCEMethod: "S256",
|
|
@@ -635,6 +875,7 @@ var providers = defineProviders({
|
|
|
635
875
|
},
|
|
636
876
|
google: {
|
|
637
877
|
authorizationUrl: "https://accounts.google.com/o/oauth2/v2/auth",
|
|
878
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
638
879
|
isOIDC: true,
|
|
639
880
|
isRefreshable: true,
|
|
640
881
|
PKCEMethod: "S256",
|
|
@@ -660,6 +901,7 @@ var providers = defineProviders({
|
|
|
660
901
|
},
|
|
661
902
|
intuit: {
|
|
662
903
|
authorizationUrl: "https://appcenter.intuit.com/connect/oauth2",
|
|
904
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
663
905
|
isOIDC: true,
|
|
664
906
|
isRefreshable: true,
|
|
665
907
|
profileRequest: {
|
|
@@ -686,6 +928,7 @@ var providers = defineProviders({
|
|
|
686
928
|
},
|
|
687
929
|
kakao: {
|
|
688
930
|
authorizationUrl: "https://kauth.kakao.com/oauth/authorize",
|
|
931
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
689
932
|
isOIDC: true,
|
|
690
933
|
isRefreshable: true,
|
|
691
934
|
PKCEMethod: "S256",
|
|
@@ -704,6 +947,7 @@ var providers = defineProviders({
|
|
|
704
947
|
},
|
|
705
948
|
keycloak: {
|
|
706
949
|
authorizationUrl: (config) => `${config.realmURL}/protocol/openid-connect/auth`,
|
|
950
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
707
951
|
isOIDC: true,
|
|
708
952
|
isRefreshable: true,
|
|
709
953
|
PKCEMethod: "S256",
|
|
@@ -728,6 +972,16 @@ var providers = defineProviders({
|
|
|
728
972
|
},
|
|
729
973
|
kick: {
|
|
730
974
|
authorizationUrl: "https://id.kick.com/oauth/authorize",
|
|
975
|
+
extractSubjectFromIdentity(identity) {
|
|
976
|
+
const subject = extractPropFromIdentity(identity, [
|
|
977
|
+
"data",
|
|
978
|
+
"user_id"
|
|
979
|
+
]);
|
|
980
|
+
if (typeof subject !== "number") {
|
|
981
|
+
throw new Error("Invalid identity data shape");
|
|
982
|
+
}
|
|
983
|
+
return subject;
|
|
984
|
+
},
|
|
731
985
|
isOIDC: false,
|
|
732
986
|
isRefreshable: true,
|
|
733
987
|
PKCEMethod: "S256",
|
|
@@ -735,7 +989,7 @@ var providers = defineProviders({
|
|
|
735
989
|
authIn: "header",
|
|
736
990
|
encoding: "application/json",
|
|
737
991
|
method: "GET",
|
|
738
|
-
url: "https://
|
|
992
|
+
url: "https://api.kick.com/public/v1/users"
|
|
739
993
|
},
|
|
740
994
|
revocationRequest: {
|
|
741
995
|
authIn: "body",
|
|
@@ -743,7 +997,7 @@ var providers = defineProviders({
|
|
|
743
997
|
tokenParamName: "token",
|
|
744
998
|
url: "https://id.kick.com/oauth/revoke"
|
|
745
999
|
},
|
|
746
|
-
scopeRequired:
|
|
1000
|
+
scopeRequired: true,
|
|
747
1001
|
tokenRequest: {
|
|
748
1002
|
authIn: "body",
|
|
749
1003
|
encoding: "application/x-www-form-urlencoded",
|
|
@@ -752,6 +1006,13 @@ var providers = defineProviders({
|
|
|
752
1006
|
},
|
|
753
1007
|
lichess: {
|
|
754
1008
|
authorizationUrl: "https://lichess.org/oauth/authorize",
|
|
1009
|
+
extractSubjectFromIdentity(identity) {
|
|
1010
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
1011
|
+
if (typeof subject !== "string") {
|
|
1012
|
+
throw new Error("Invalid identity data shape");
|
|
1013
|
+
}
|
|
1014
|
+
return subject;
|
|
1015
|
+
},
|
|
755
1016
|
isOIDC: false,
|
|
756
1017
|
isRefreshable: false,
|
|
757
1018
|
PKCEMethod: "S256",
|
|
@@ -770,6 +1031,7 @@ var providers = defineProviders({
|
|
|
770
1031
|
},
|
|
771
1032
|
line: {
|
|
772
1033
|
authorizationUrl: "https://access.line.me/oauth2/v2.1/authorize",
|
|
1034
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
773
1035
|
isOIDC: true,
|
|
774
1036
|
isRefreshable: true,
|
|
775
1037
|
PKCEMethod: "S256",
|
|
@@ -788,6 +1050,17 @@ var providers = defineProviders({
|
|
|
788
1050
|
},
|
|
789
1051
|
linear: {
|
|
790
1052
|
authorizationUrl: "https://linear.app/oauth/authorize",
|
|
1053
|
+
extractSubjectFromIdentity(identity) {
|
|
1054
|
+
const subject = extractPropFromIdentity(identity, [
|
|
1055
|
+
"data",
|
|
1056
|
+
"viewer",
|
|
1057
|
+
"id"
|
|
1058
|
+
]);
|
|
1059
|
+
if (typeof subject !== "string") {
|
|
1060
|
+
throw new Error("Invalid identity data shape");
|
|
1061
|
+
}
|
|
1062
|
+
return subject;
|
|
1063
|
+
},
|
|
791
1064
|
isOIDC: false,
|
|
792
1065
|
isRefreshable: false,
|
|
793
1066
|
profileRequest: {
|
|
@@ -817,6 +1090,7 @@ var providers = defineProviders({
|
|
|
817
1090
|
},
|
|
818
1091
|
linkedin: {
|
|
819
1092
|
authorizationUrl: "https://www.linkedin.com/oauth/v2/authorization",
|
|
1093
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
820
1094
|
isOIDC: true,
|
|
821
1095
|
isRefreshable: true,
|
|
822
1096
|
PKCEMethod: "S256",
|
|
@@ -835,6 +1109,13 @@ var providers = defineProviders({
|
|
|
835
1109
|
},
|
|
836
1110
|
mastodon: {
|
|
837
1111
|
authorizationUrl: (config) => `${config.baseURL}/oauth/authorize`,
|
|
1112
|
+
extractSubjectFromIdentity(identity) {
|
|
1113
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
1114
|
+
if (typeof subject !== "string") {
|
|
1115
|
+
throw new Error("Invalid identity data shape");
|
|
1116
|
+
}
|
|
1117
|
+
return subject;
|
|
1118
|
+
},
|
|
838
1119
|
isOIDC: false,
|
|
839
1120
|
isRefreshable: false,
|
|
840
1121
|
PKCEMethod: "S256",
|
|
@@ -859,6 +1140,13 @@ var providers = defineProviders({
|
|
|
859
1140
|
},
|
|
860
1141
|
mercadolibre: {
|
|
861
1142
|
authorizationUrl: "https://auth.mercadolibre.com/authorization",
|
|
1143
|
+
extractSubjectFromIdentity(identity) {
|
|
1144
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
1145
|
+
if (typeof subject !== "string") {
|
|
1146
|
+
throw new Error("Invalid identity data shape");
|
|
1147
|
+
}
|
|
1148
|
+
return subject;
|
|
1149
|
+
},
|
|
862
1150
|
isOIDC: false,
|
|
863
1151
|
isRefreshable: true,
|
|
864
1152
|
PKCEMethod: "S256",
|
|
@@ -877,6 +1165,13 @@ var providers = defineProviders({
|
|
|
877
1165
|
},
|
|
878
1166
|
mercadopago: {
|
|
879
1167
|
authorizationUrl: "https://auth.mercadopago.com/authorization",
|
|
1168
|
+
extractSubjectFromIdentity(identity) {
|
|
1169
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
1170
|
+
if (typeof subject !== "string") {
|
|
1171
|
+
throw new Error("Invalid identity data shape");
|
|
1172
|
+
}
|
|
1173
|
+
return subject;
|
|
1174
|
+
},
|
|
880
1175
|
isOIDC: false,
|
|
881
1176
|
isRefreshable: true,
|
|
882
1177
|
profileRequest: {
|
|
@@ -894,6 +1189,7 @@ var providers = defineProviders({
|
|
|
894
1189
|
},
|
|
895
1190
|
microsoftentraid: {
|
|
896
1191
|
authorizationUrl: (config) => `https://${config.tenantId}.b2clogin.com/${config.tenantId}/oauth2/v2.0/authorize`,
|
|
1192
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
897
1193
|
isOIDC: true,
|
|
898
1194
|
isRefreshable: true,
|
|
899
1195
|
PKCEMethod: "S256",
|
|
@@ -912,6 +1208,13 @@ var providers = defineProviders({
|
|
|
912
1208
|
},
|
|
913
1209
|
myanimelist: {
|
|
914
1210
|
authorizationUrl: "https://myanimelist.net/v1/oauth2/authorize",
|
|
1211
|
+
extractSubjectFromIdentity(identity) {
|
|
1212
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
1213
|
+
if (typeof subject !== "number") {
|
|
1214
|
+
throw new Error("Invalid identity data shape");
|
|
1215
|
+
}
|
|
1216
|
+
return subject;
|
|
1217
|
+
},
|
|
915
1218
|
isOIDC: false,
|
|
916
1219
|
isRefreshable: true,
|
|
917
1220
|
PKCEMethod: "plain",
|
|
@@ -930,6 +1233,16 @@ var providers = defineProviders({
|
|
|
930
1233
|
},
|
|
931
1234
|
naver: {
|
|
932
1235
|
authorizationUrl: "https://nid.naver.com/oauth2.0/authorize",
|
|
1236
|
+
extractSubjectFromIdentity(identity) {
|
|
1237
|
+
const subject = extractPropFromIdentity(identity, [
|
|
1238
|
+
"response",
|
|
1239
|
+
"id"
|
|
1240
|
+
]);
|
|
1241
|
+
if (typeof subject !== "string") {
|
|
1242
|
+
throw new Error("Invalid identity data shape");
|
|
1243
|
+
}
|
|
1244
|
+
return subject;
|
|
1245
|
+
},
|
|
933
1246
|
isOIDC: false,
|
|
934
1247
|
isRefreshable: true,
|
|
935
1248
|
profileRequest: {
|
|
@@ -947,6 +1260,13 @@ var providers = defineProviders({
|
|
|
947
1260
|
},
|
|
948
1261
|
notion: {
|
|
949
1262
|
authorizationUrl: "https://api.notion.com/v1/oauth/authorize",
|
|
1263
|
+
extractSubjectFromIdentity(identity) {
|
|
1264
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
1265
|
+
if (typeof subject !== "string") {
|
|
1266
|
+
throw new Error("Invalid identity data shape");
|
|
1267
|
+
}
|
|
1268
|
+
return subject;
|
|
1269
|
+
},
|
|
950
1270
|
isOIDC: false,
|
|
951
1271
|
isRefreshable: false,
|
|
952
1272
|
profileRequest: {
|
|
@@ -967,6 +1287,7 @@ var providers = defineProviders({
|
|
|
967
1287
|
},
|
|
968
1288
|
okta: {
|
|
969
1289
|
authorizationUrl: (config) => `https://${config.domain}/oauth2/default/v1/authorize`,
|
|
1290
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
970
1291
|
isOIDC: true,
|
|
971
1292
|
isRefreshable: true,
|
|
972
1293
|
PKCEMethod: "S256",
|
|
@@ -991,6 +1312,13 @@ var providers = defineProviders({
|
|
|
991
1312
|
},
|
|
992
1313
|
osu: {
|
|
993
1314
|
authorizationUrl: "https://osu.ppy.sh/oauth/authorize",
|
|
1315
|
+
extractSubjectFromIdentity(identity) {
|
|
1316
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
1317
|
+
if (typeof subject !== "number") {
|
|
1318
|
+
throw new Error("Invalid identity data shape");
|
|
1319
|
+
}
|
|
1320
|
+
return subject;
|
|
1321
|
+
},
|
|
994
1322
|
isOIDC: false,
|
|
995
1323
|
isRefreshable: true,
|
|
996
1324
|
profileRequest: {
|
|
@@ -1008,6 +1336,13 @@ var providers = defineProviders({
|
|
|
1008
1336
|
},
|
|
1009
1337
|
patreon: {
|
|
1010
1338
|
authorizationUrl: "https://www.patreon.com/oauth2/authorize",
|
|
1339
|
+
extractSubjectFromIdentity(identity) {
|
|
1340
|
+
const subject = extractPropFromIdentity(identity, ["data", "id"]);
|
|
1341
|
+
if (typeof subject !== "string") {
|
|
1342
|
+
throw new Error("Invalid identity data shape");
|
|
1343
|
+
}
|
|
1344
|
+
return subject;
|
|
1345
|
+
},
|
|
1011
1346
|
isOIDC: false,
|
|
1012
1347
|
isRefreshable: true,
|
|
1013
1348
|
profileRequest: {
|
|
@@ -1025,6 +1360,7 @@ var providers = defineProviders({
|
|
|
1025
1360
|
},
|
|
1026
1361
|
polar: {
|
|
1027
1362
|
authorizationUrl: "https://polar.sh/oauth2/authorize",
|
|
1363
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
1028
1364
|
isOIDC: true,
|
|
1029
1365
|
isRefreshable: true,
|
|
1030
1366
|
PKCEMethod: "S256",
|
|
@@ -1049,6 +1385,13 @@ var providers = defineProviders({
|
|
|
1049
1385
|
},
|
|
1050
1386
|
polaraccesslink: {
|
|
1051
1387
|
authorizationUrl: "https://flow.polar.com/oauth2/authorization",
|
|
1388
|
+
extractSubjectFromIdentity(identity) {
|
|
1389
|
+
const subject = extractPropFromIdentity(identity, ["x_user_id"]);
|
|
1390
|
+
if (typeof subject !== "number") {
|
|
1391
|
+
throw new Error("Invalid identity data shape");
|
|
1392
|
+
}
|
|
1393
|
+
return subject;
|
|
1394
|
+
},
|
|
1052
1395
|
isOIDC: false,
|
|
1053
1396
|
isRefreshable: false,
|
|
1054
1397
|
PKCEMethod: "S256",
|
|
@@ -1067,6 +1410,13 @@ var providers = defineProviders({
|
|
|
1067
1410
|
},
|
|
1068
1411
|
polarteampro: {
|
|
1069
1412
|
authorizationUrl: "https://auth.polar.com/oauth/authorize",
|
|
1413
|
+
extractSubjectFromIdentity(identity) {
|
|
1414
|
+
const subject = extractPropFromIdentity(identity, ["x_user_id"]);
|
|
1415
|
+
if (typeof subject !== "number") {
|
|
1416
|
+
throw new Error("Invalid identity data shape");
|
|
1417
|
+
}
|
|
1418
|
+
return subject;
|
|
1419
|
+
},
|
|
1070
1420
|
isOIDC: false,
|
|
1071
1421
|
isRefreshable: true,
|
|
1072
1422
|
PKCEMethod: "S256",
|
|
@@ -1085,6 +1435,13 @@ var providers = defineProviders({
|
|
|
1085
1435
|
},
|
|
1086
1436
|
reddit: {
|
|
1087
1437
|
authorizationUrl: "https://www.reddit.com/api/v1/authorize",
|
|
1438
|
+
extractSubjectFromIdentity(identity) {
|
|
1439
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
1440
|
+
if (typeof subject !== "string") {
|
|
1441
|
+
throw new Error("Invalid identity data shape");
|
|
1442
|
+
}
|
|
1443
|
+
return subject;
|
|
1444
|
+
},
|
|
1088
1445
|
isOIDC: false,
|
|
1089
1446
|
isRefreshable: true,
|
|
1090
1447
|
profileRequest: {
|
|
@@ -1110,6 +1467,7 @@ var providers = defineProviders({
|
|
|
1110
1467
|
},
|
|
1111
1468
|
roblox: {
|
|
1112
1469
|
authorizationUrl: "https://apis.roblox.com/oauth/v1/authorize",
|
|
1470
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
1113
1471
|
isOIDC: true,
|
|
1114
1472
|
isRefreshable: true,
|
|
1115
1473
|
PKCEMethod: "S256",
|
|
@@ -1128,6 +1486,7 @@ var providers = defineProviders({
|
|
|
1128
1486
|
},
|
|
1129
1487
|
salesforce: {
|
|
1130
1488
|
authorizationUrl: "https://login.salesforce.com/services/oauth2/authorize",
|
|
1489
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
1131
1490
|
isOIDC: true,
|
|
1132
1491
|
isRefreshable: true,
|
|
1133
1492
|
PKCEMethod: "S256",
|
|
@@ -1151,6 +1510,13 @@ var providers = defineProviders({
|
|
|
1151
1510
|
},
|
|
1152
1511
|
shikimori: {
|
|
1153
1512
|
authorizationUrl: "https://shikimori.org/oauth/authorize",
|
|
1513
|
+
extractSubjectFromIdentity(identity) {
|
|
1514
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
1515
|
+
if (typeof subject !== "number") {
|
|
1516
|
+
throw new Error("Invalid identity data shape");
|
|
1517
|
+
}
|
|
1518
|
+
return subject;
|
|
1519
|
+
},
|
|
1154
1520
|
isOIDC: false,
|
|
1155
1521
|
isRefreshable: true,
|
|
1156
1522
|
profileRequest: {
|
|
@@ -1168,6 +1534,7 @@ var providers = defineProviders({
|
|
|
1168
1534
|
},
|
|
1169
1535
|
slack: {
|
|
1170
1536
|
authorizationUrl: "https://slack.com/openid/connect/authorize",
|
|
1537
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
1171
1538
|
isOIDC: true,
|
|
1172
1539
|
isRefreshable: true,
|
|
1173
1540
|
profileRequest: {
|
|
@@ -1191,6 +1558,13 @@ var providers = defineProviders({
|
|
|
1191
1558
|
},
|
|
1192
1559
|
spotify: {
|
|
1193
1560
|
authorizationUrl: "https://accounts.spotify.com/authorize",
|
|
1561
|
+
extractSubjectFromIdentity(identity) {
|
|
1562
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
1563
|
+
if (typeof subject !== "string") {
|
|
1564
|
+
throw new Error("Invalid identity data shape");
|
|
1565
|
+
}
|
|
1566
|
+
return subject;
|
|
1567
|
+
},
|
|
1194
1568
|
isOIDC: false,
|
|
1195
1569
|
isRefreshable: true,
|
|
1196
1570
|
PKCEMethod: "S256",
|
|
@@ -1209,6 +1583,17 @@ var providers = defineProviders({
|
|
|
1209
1583
|
},
|
|
1210
1584
|
startgg: {
|
|
1211
1585
|
authorizationUrl: "https://start.gg/oauth/authorize",
|
|
1586
|
+
extractSubjectFromIdentity(identity) {
|
|
1587
|
+
const subject = extractPropFromIdentity(identity, [
|
|
1588
|
+
"data",
|
|
1589
|
+
"currentUser",
|
|
1590
|
+
"id"
|
|
1591
|
+
]);
|
|
1592
|
+
if (typeof subject !== "string") {
|
|
1593
|
+
throw new Error("Invalid identity data shape");
|
|
1594
|
+
}
|
|
1595
|
+
return subject;
|
|
1596
|
+
},
|
|
1212
1597
|
isOIDC: false,
|
|
1213
1598
|
isRefreshable: true,
|
|
1214
1599
|
profileRequest: {
|
|
@@ -1233,6 +1618,13 @@ var providers = defineProviders({
|
|
|
1233
1618
|
},
|
|
1234
1619
|
strava: {
|
|
1235
1620
|
authorizationUrl: "https://www.strava.com/oauth/authorize",
|
|
1621
|
+
extractSubjectFromIdentity(identity) {
|
|
1622
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
1623
|
+
if (typeof subject !== "number") {
|
|
1624
|
+
throw new Error("Invalid identity data shape");
|
|
1625
|
+
}
|
|
1626
|
+
return subject;
|
|
1627
|
+
},
|
|
1236
1628
|
isOIDC: false,
|
|
1237
1629
|
isRefreshable: true,
|
|
1238
1630
|
PKCEMethod: "S256",
|
|
@@ -1260,6 +1652,13 @@ var providers = defineProviders({
|
|
|
1260
1652
|
},
|
|
1261
1653
|
synology: {
|
|
1262
1654
|
authorizationUrl: (config) => `${config.baseURL}/webman/sso/SSOOauth.cgi?client_id=${config.clientId}&response_type=code&redirect_uri=${config.redirectUri}`,
|
|
1655
|
+
extractSubjectFromIdentity(identity) {
|
|
1656
|
+
const subject = extractPropFromIdentity(identity, ["data", "id"]);
|
|
1657
|
+
if (typeof subject !== "string") {
|
|
1658
|
+
throw new Error("Invalid identity data shape");
|
|
1659
|
+
}
|
|
1660
|
+
return subject;
|
|
1661
|
+
},
|
|
1263
1662
|
isOIDC: false,
|
|
1264
1663
|
isRefreshable: false,
|
|
1265
1664
|
profileRequest: {
|
|
@@ -1280,6 +1679,16 @@ var providers = defineProviders({
|
|
|
1280
1679
|
createAuthorizationURLSearchParams: (config) => ({
|
|
1281
1680
|
client_key: config.clientId
|
|
1282
1681
|
}),
|
|
1682
|
+
extractSubjectFromIdentity(identity) {
|
|
1683
|
+
const subject = extractPropFromIdentity(identity, [
|
|
1684
|
+
"data",
|
|
1685
|
+
"open_id"
|
|
1686
|
+
]);
|
|
1687
|
+
if (typeof subject !== "string") {
|
|
1688
|
+
throw new Error("Invalid identity data shape");
|
|
1689
|
+
}
|
|
1690
|
+
return subject;
|
|
1691
|
+
},
|
|
1283
1692
|
isOIDC: false,
|
|
1284
1693
|
isRefreshable: true,
|
|
1285
1694
|
PKCEMethod: "S256",
|
|
@@ -1304,6 +1713,13 @@ var providers = defineProviders({
|
|
|
1304
1713
|
},
|
|
1305
1714
|
tiltify: {
|
|
1306
1715
|
authorizationUrl: "https://v5api.tiltify.com/oauth/authorize",
|
|
1716
|
+
extractSubjectFromIdentity(identity) {
|
|
1717
|
+
const subject = extractPropFromIdentity(identity, ["data", "id"]);
|
|
1718
|
+
if (typeof subject !== "string") {
|
|
1719
|
+
throw new Error("Invalid identity data shape");
|
|
1720
|
+
}
|
|
1721
|
+
return subject;
|
|
1722
|
+
},
|
|
1307
1723
|
isOIDC: false,
|
|
1308
1724
|
isRefreshable: true,
|
|
1309
1725
|
profileRequest: {
|
|
@@ -1321,6 +1737,17 @@ var providers = defineProviders({
|
|
|
1321
1737
|
},
|
|
1322
1738
|
tumblr: {
|
|
1323
1739
|
authorizationUrl: "https://www.tumblr.com/oauth2/authorize",
|
|
1740
|
+
extractSubjectFromIdentity(identity) {
|
|
1741
|
+
const subject = extractPropFromIdentity(identity, [
|
|
1742
|
+
"response",
|
|
1743
|
+
"user",
|
|
1744
|
+
"name"
|
|
1745
|
+
]);
|
|
1746
|
+
if (typeof subject !== "string") {
|
|
1747
|
+
throw new Error("Invalid identity data shape");
|
|
1748
|
+
}
|
|
1749
|
+
return subject;
|
|
1750
|
+
},
|
|
1324
1751
|
isOIDC: false,
|
|
1325
1752
|
isRefreshable: true,
|
|
1326
1753
|
profileRequest: {
|
|
@@ -1338,6 +1765,7 @@ var providers = defineProviders({
|
|
|
1338
1765
|
},
|
|
1339
1766
|
twitch: {
|
|
1340
1767
|
authorizationUrl: "https://id.twitch.tv/oauth2/authorize",
|
|
1768
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
1341
1769
|
isOIDC: true,
|
|
1342
1770
|
isRefreshable: true,
|
|
1343
1771
|
profileRequest: {
|
|
@@ -1367,6 +1795,13 @@ var providers = defineProviders({
|
|
|
1367
1795
|
},
|
|
1368
1796
|
twitter: {
|
|
1369
1797
|
authorizationUrl: "https://twitter.com/i/oauth2/authorize",
|
|
1798
|
+
extractSubjectFromIdentity(identity) {
|
|
1799
|
+
const subject = extractPropFromIdentity(identity, ["data", "id"]);
|
|
1800
|
+
if (typeof subject !== "string") {
|
|
1801
|
+
throw new Error("Invalid identity data shape");
|
|
1802
|
+
}
|
|
1803
|
+
return subject;
|
|
1804
|
+
},
|
|
1370
1805
|
isOIDC: false,
|
|
1371
1806
|
isRefreshable: true,
|
|
1372
1807
|
PKCEMethod: "S256",
|
|
@@ -1390,6 +1825,17 @@ var providers = defineProviders({
|
|
|
1390
1825
|
},
|
|
1391
1826
|
vk: {
|
|
1392
1827
|
authorizationUrl: "https://oauth.vk.com/authorize",
|
|
1828
|
+
extractSubjectFromIdentity(identity) {
|
|
1829
|
+
const subject = extractPropFromIdentity(identity, [
|
|
1830
|
+
"response",
|
|
1831
|
+
"0",
|
|
1832
|
+
"id"
|
|
1833
|
+
]);
|
|
1834
|
+
if (typeof subject !== "number") {
|
|
1835
|
+
throw new Error("Invalid identity data shape");
|
|
1836
|
+
}
|
|
1837
|
+
return subject;
|
|
1838
|
+
},
|
|
1393
1839
|
isOIDC: false,
|
|
1394
1840
|
isRefreshable: false,
|
|
1395
1841
|
profileRequest: {
|
|
@@ -1407,6 +1853,16 @@ var providers = defineProviders({
|
|
|
1407
1853
|
},
|
|
1408
1854
|
withings: {
|
|
1409
1855
|
authorizationUrl: "https://account.withings.com/oauth2_user/authorize2",
|
|
1856
|
+
extractSubjectFromIdentity(identity) {
|
|
1857
|
+
const subject = extractPropFromIdentity(identity, [
|
|
1858
|
+
"body",
|
|
1859
|
+
"userid"
|
|
1860
|
+
]);
|
|
1861
|
+
if (typeof subject !== "number") {
|
|
1862
|
+
throw new Error("Invalid identity data shape");
|
|
1863
|
+
}
|
|
1864
|
+
return subject;
|
|
1865
|
+
},
|
|
1410
1866
|
isOIDC: false,
|
|
1411
1867
|
isRefreshable: true,
|
|
1412
1868
|
profileRequest: {
|
|
@@ -1460,6 +1916,7 @@ var providers = defineProviders({
|
|
|
1460
1916
|
},
|
|
1461
1917
|
workos: {
|
|
1462
1918
|
authorizationUrl: "https://api.workos.com/sso/authorize",
|
|
1919
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
1463
1920
|
isOIDC: true,
|
|
1464
1921
|
isRefreshable: true,
|
|
1465
1922
|
PKCEMethod: "S256",
|
|
@@ -1478,6 +1935,7 @@ var providers = defineProviders({
|
|
|
1478
1935
|
},
|
|
1479
1936
|
yahoo: {
|
|
1480
1937
|
authorizationUrl: "https://api.login.yahoo.com/oauth2/request_auth",
|
|
1938
|
+
extractSubjectFromIdentity: extractSubFromOIDCIdentity,
|
|
1481
1939
|
isOIDC: true,
|
|
1482
1940
|
isRefreshable: true,
|
|
1483
1941
|
PKCEMethod: "S256",
|
|
@@ -1505,6 +1963,13 @@ var providers = defineProviders({
|
|
|
1505
1963
|
device_id: crypto.randomUUID(),
|
|
1506
1964
|
device_name: `${navigator.platform ?? "Unknown"} \u2014 ${(navigator.userAgent.split(")")[0] || "").split("(").pop() || "Unknown"}`
|
|
1507
1965
|
},
|
|
1966
|
+
extractSubjectFromIdentity(identity) {
|
|
1967
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
1968
|
+
if (typeof subject !== "string") {
|
|
1969
|
+
throw new Error("Invalid identity data shape");
|
|
1970
|
+
}
|
|
1971
|
+
return subject;
|
|
1972
|
+
},
|
|
1508
1973
|
isOIDC: false,
|
|
1509
1974
|
isRefreshable: true,
|
|
1510
1975
|
PKCEMethod: "S256",
|
|
@@ -1529,6 +1994,13 @@ var providers = defineProviders({
|
|
|
1529
1994
|
},
|
|
1530
1995
|
zoom: {
|
|
1531
1996
|
authorizationUrl: "https://zoom.us/oauth/authorize",
|
|
1997
|
+
extractSubjectFromIdentity(identity) {
|
|
1998
|
+
const subject = extractPropFromIdentity(identity, ["id"]);
|
|
1999
|
+
if (typeof subject !== "string") {
|
|
2000
|
+
throw new Error("Invalid identity data shape");
|
|
2001
|
+
}
|
|
2002
|
+
return subject;
|
|
2003
|
+
},
|
|
1532
2004
|
isOIDC: false,
|
|
1533
2005
|
isRefreshable: true,
|
|
1534
2006
|
PKCEMethod: "S256",
|
|
@@ -2197,16 +2669,16 @@ var instantiateUserSession = async ({
|
|
|
2197
2669
|
getUser,
|
|
2198
2670
|
createUser
|
|
2199
2671
|
}) => {
|
|
2200
|
-
let
|
|
2672
|
+
let userIdentity;
|
|
2201
2673
|
if (tokenResponse.id_token) {
|
|
2202
|
-
|
|
2674
|
+
userIdentity = decodeJWT(tokenResponse.id_token);
|
|
2203
2675
|
} else if (authProvider === "withings") {
|
|
2204
|
-
|
|
2676
|
+
userIdentity = tokenResponse.body;
|
|
2205
2677
|
} else {
|
|
2206
|
-
|
|
2678
|
+
userIdentity = await providerInstance.fetchUserProfile(tokenResponse.access_token);
|
|
2207
2679
|
}
|
|
2208
|
-
let user = await getUser(
|
|
2209
|
-
user = user ?? await createUser(
|
|
2680
|
+
let user = await getUser(userIdentity);
|
|
2681
|
+
user = user ?? await createUser(userIdentity);
|
|
2210
2682
|
if (!isValidUser(user))
|
|
2211
2683
|
throw new Error("Internal Server Error - Invalid user schema");
|
|
2212
2684
|
session[userSessionId] = {
|
|
@@ -2230,12 +2702,17 @@ var absoluteAuth = async ({
|
|
|
2230
2702
|
refreshRoute,
|
|
2231
2703
|
revokeRoute,
|
|
2232
2704
|
onAuthorizeSuccess,
|
|
2705
|
+
onAuthorizeError,
|
|
2233
2706
|
onProfileSuccess,
|
|
2707
|
+
onProfileError,
|
|
2234
2708
|
onCallbackSuccess,
|
|
2709
|
+
onCallbackError,
|
|
2235
2710
|
onStatus,
|
|
2236
2711
|
onRefreshSuccess,
|
|
2712
|
+
onRefreshError,
|
|
2237
2713
|
onSignOut,
|
|
2238
|
-
onRevocationSuccess
|
|
2714
|
+
onRevocationSuccess,
|
|
2715
|
+
onRevocationError
|
|
2239
2716
|
}) => {
|
|
2240
2717
|
const entryPromises = [];
|
|
2241
2718
|
for (const [providerName, providerConfig] of Object.entries(providersConfiguration)) {
|
|
@@ -2251,12 +2728,29 @@ var absoluteAuth = async ({
|
|
|
2251
2728
|
]));
|
|
2252
2729
|
}
|
|
2253
2730
|
const clientProviders = Object.fromEntries(await Promise.all(entryPromises));
|
|
2254
|
-
return new Elysia10().use(signout({ onSignOut, signoutRoute })).use(revoke({
|
|
2731
|
+
return new Elysia10().use(signout({ onSignOut, signoutRoute })).use(revoke({
|
|
2732
|
+
clientProviders,
|
|
2733
|
+
onRevocationError,
|
|
2734
|
+
onRevocationSuccess,
|
|
2735
|
+
revokeRoute
|
|
2736
|
+
})).use(status({ onStatus, statusRoute })).use(refresh({
|
|
2737
|
+
clientProviders,
|
|
2738
|
+
onRefreshError,
|
|
2739
|
+
onRefreshSuccess,
|
|
2740
|
+
refreshRoute
|
|
2741
|
+
})).use(authorize({
|
|
2742
|
+
authorizeRoute,
|
|
2743
|
+
clientProviders,
|
|
2744
|
+
onAuthorizeError,
|
|
2745
|
+
onAuthorizeSuccess
|
|
2746
|
+
})).use(callback({
|
|
2255
2747
|
callbackRoute,
|
|
2256
2748
|
clientProviders,
|
|
2749
|
+
onCallbackError,
|
|
2257
2750
|
onCallbackSuccess
|
|
2258
2751
|
})).use(profile({
|
|
2259
2752
|
clientProviders,
|
|
2753
|
+
onProfileError,
|
|
2260
2754
|
onProfileSuccess,
|
|
2261
2755
|
profileRoute
|
|
2262
2756
|
})).use(protectRoute());
|
|
@@ -2283,5 +2777,5 @@ export {
|
|
|
2283
2777
|
absoluteAuth
|
|
2284
2778
|
};
|
|
2285
2779
|
|
|
2286
|
-
//# debugId=
|
|
2780
|
+
//# debugId=93A2F2664C7B8CCC64756E2164756E21
|
|
2287
2781
|
//# sourceMappingURL=index.js.map
|