@strapi/plugin-users-permissions 5.50.1 → 5.51.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.
Files changed (65) hide show
  1. package/admin/src/pages/Roles/pages/EditPage.jsx +1 -1
  2. package/admin/src/translations/en.json +2 -0
  3. package/admin/src/translations/ko.json +2 -1
  4. package/dist/admin/pages/Roles/pages/EditPage.js +1 -1
  5. package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -1
  6. package/dist/admin/pages/Roles/pages/EditPage.mjs +1 -1
  7. package/dist/admin/pages/Roles/pages/EditPage.mjs.map +1 -1
  8. package/dist/admin/translations/en.json.js +1 -0
  9. package/dist/admin/translations/en.json.js.map +1 -1
  10. package/dist/admin/translations/en.json.mjs +1 -0
  11. package/dist/admin/translations/en.json.mjs.map +1 -1
  12. package/dist/admin/translations/ko.json.js +2 -1
  13. package/dist/admin/translations/ko.json.js.map +1 -1
  14. package/dist/admin/translations/ko.json.mjs +2 -1
  15. package/dist/admin/translations/ko.json.mjs.map +1 -1
  16. package/dist/server/_virtual/_node_crypto.js +10 -0
  17. package/dist/server/_virtual/_node_crypto.js.map +1 -0
  18. package/dist/server/_virtual/_node_crypto.mjs +7 -0
  19. package/dist/server/_virtual/_node_crypto.mjs.map +1 -0
  20. package/dist/server/_virtual/_node_url.js +10 -0
  21. package/dist/server/_virtual/_node_url.js.map +1 -0
  22. package/dist/server/_virtual/_node_url.mjs +7 -0
  23. package/dist/server/_virtual/_node_url.mjs.map +1 -0
  24. package/dist/server/controllers/auth.js +19 -19
  25. package/dist/server/controllers/auth.js.map +1 -1
  26. package/dist/server/controllers/auth.mjs +19 -18
  27. package/dist/server/controllers/auth.mjs.map +1 -1
  28. package/dist/server/services/providers-registry.js +121 -242
  29. package/dist/server/services/providers-registry.js.map +1 -1
  30. package/dist/server/services/providers-registry.mjs +121 -239
  31. package/dist/server/services/providers-registry.mjs.map +1 -1
  32. package/dist/server/utils/oauth-connect/index.js +236 -0
  33. package/dist/server/utils/oauth-connect/index.js.map +1 -0
  34. package/dist/server/utils/oauth-connect/index.mjs +230 -0
  35. package/dist/server/utils/oauth-connect/index.mjs.map +1 -0
  36. package/dist/server/utils/oauth-connect/oauth1.js +138 -0
  37. package/dist/server/utils/oauth-connect/oauth1.js.map +1 -0
  38. package/dist/server/utils/oauth-connect/oauth1.mjs +136 -0
  39. package/dist/server/utils/oauth-connect/oauth1.mjs.map +1 -0
  40. package/dist/server/utils/oauth-connect/oauth2.js +117 -0
  41. package/dist/server/utils/oauth-connect/oauth2.js.map +1 -0
  42. package/dist/server/utils/oauth-connect/oauth2.mjs +115 -0
  43. package/dist/server/utils/oauth-connect/oauth2.mjs.map +1 -0
  44. package/dist/server/utils/oauth-connect/providers.js +109 -0
  45. package/dist/server/utils/oauth-connect/providers.js.map +1 -0
  46. package/dist/server/utils/oauth-connect/providers.mjs +107 -0
  47. package/dist/server/utils/oauth-connect/providers.mjs.map +1 -0
  48. package/dist/server/utils/provider-http.js +52 -0
  49. package/dist/server/utils/provider-http.js.map +1 -0
  50. package/dist/server/utils/provider-http.mjs +50 -0
  51. package/dist/server/utils/provider-http.mjs.map +1 -0
  52. package/dist/server/utils/verify-jwt-with-jwks.js +60 -0
  53. package/dist/server/utils/verify-jwt-with-jwks.js.map +1 -0
  54. package/dist/server/utils/verify-jwt-with-jwks.mjs +54 -0
  55. package/dist/server/utils/verify-jwt-with-jwks.mjs.map +1 -0
  56. package/jsconfig.json +7 -0
  57. package/package.json +12 -12
  58. package/server/controllers/auth.js +13 -20
  59. package/server/services/providers-registry.js +137 -293
  60. package/server/utils/oauth-connect/index.js +256 -0
  61. package/server/utils/oauth-connect/oauth1.js +169 -0
  62. package/server/utils/oauth-connect/oauth2.js +123 -0
  63. package/server/utils/oauth-connect/providers.js +100 -0
  64. package/server/utils/provider-http.js +49 -0
  65. package/server/utils/verify-jwt-with-jwks.js +43 -0
@@ -1,52 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  const { strict: assert } = require('assert');
4
- const jwt = require('jsonwebtoken');
5
4
  const urljoin = require('url-join');
6
- const jwkToPem = require('jwk-to-pem');
7
5
 
8
- const getCognitoPayload = async ({ idToken, jwksUrl, purest }) => {
9
- const {
10
- header: { kid },
11
- payload,
12
- } = jwt.decode(idToken, { complete: true });
6
+ const { verifyJwtWithJwks } = require('../utils/verify-jwt-with-jwks');
7
+ const { bearerGet, fetchJson } = require('../utils/provider-http');
13
8
 
14
- if (!payload || !kid) {
15
- throw new Error('The provided token is not valid');
16
- }
17
-
18
- const config = {
19
- cognito: {
20
- discovery: {
21
- origin: jwksUrl.origin,
22
- path: jwksUrl.pathname,
23
- },
24
- },
25
- };
26
- try {
27
- const cognito = purest({ provider: 'cognito', config });
28
- // get the JSON Web Key (JWK) for the user pool
29
- const { body: jwk } = await cognito('discovery').request();
30
- // Get the key with the same Key ID as the provided token
31
- const key = jwk.keys.find(({ kid: jwkKid }) => jwkKid === kid);
32
- const pem = jwkToPem(key);
33
-
34
- // https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html
35
- const decodedToken = await new Promise((resolve, reject) => {
36
- jwt.verify(idToken, pem, { algorithms: ['RS256'] }, (err, decodedToken) => {
37
- if (err) {
38
- reject();
39
- }
40
- resolve(decodedToken);
41
- });
42
- });
43
- return decodedToken;
44
- } catch (err) {
45
- throw new Error('There was an error verifying the token');
46
- }
47
- };
48
-
49
- const initProviders = ({ baseURL, purest }) => ({
9
+ const initProviders = ({ baseURL }) => ({
50
10
  email: {
51
11
  enabled: true,
52
12
  icon: 'envelope',
@@ -62,23 +22,15 @@ const initProviders = ({ baseURL, purest }) => ({
62
22
  scope: ['identify', 'email'],
63
23
  },
64
24
  async authCallback({ accessToken }) {
65
- const discord = purest({ provider: 'discord' });
66
-
67
- return discord
68
- .get('users/@me')
69
- .auth(accessToken)
70
- .request()
71
- .then(({ body }) => {
72
- // Combine username and discriminator (if discriminator exists and not equal to 0)
73
- const username =
74
- body.discriminator && body.discriminator !== '0'
75
- ? `${body.username}#${body.discriminator}`
76
- : body.username;
77
- return {
78
- username,
79
- email: body.email,
80
- };
81
- });
25
+ const { body } = await bearerGet('https://discord.com/api/users/@me', accessToken);
26
+ const username =
27
+ body.discriminator && body.discriminator !== '0'
28
+ ? `${body.username}#${body.discriminator}`
29
+ : body.username;
30
+ return {
31
+ username,
32
+ email: body.email,
33
+ };
82
34
  },
83
35
  },
84
36
  facebook: {
@@ -91,17 +43,13 @@ const initProviders = ({ baseURL, purest }) => ({
91
43
  scope: ['email'],
92
44
  },
93
45
  async authCallback({ accessToken }) {
94
- const facebook = purest({ provider: 'facebook' });
95
-
96
- return facebook
97
- .get('me')
98
- .auth(accessToken)
99
- .qs({ fields: 'name,email' })
100
- .request()
101
- .then(({ body }) => ({
102
- username: body.name,
103
- email: body.email,
104
- }));
46
+ const { body } = await bearerGet('https://graph.facebook.com/me', accessToken, {
47
+ qs: { fields: 'name,email' },
48
+ });
49
+ return {
50
+ username: body.name,
51
+ email: body.email,
52
+ };
105
53
  },
106
54
  },
107
55
  google: {
@@ -114,17 +62,13 @@ const initProviders = ({ baseURL, purest }) => ({
114
62
  scope: ['email'],
115
63
  },
116
64
  async authCallback({ accessToken }) {
117
- const google = purest({ provider: 'google' });
118
-
119
- return google
120
- .query('oauth')
121
- .get('tokeninfo')
122
- .qs({ accessToken })
123
- .request()
124
- .then(({ body }) => ({
125
- username: body.email.split('@')[0],
126
- email: body.email,
127
- }));
65
+ const { body } = await fetchJson(
66
+ `https://oauth2.googleapis.com/tokeninfo?access_token=${encodeURIComponent(accessToken)}`
67
+ );
68
+ return {
69
+ username: body.email.split('@')[0],
70
+ email: body.email,
71
+ };
128
72
  },
129
73
  },
130
74
  github: {
@@ -137,26 +81,24 @@ const initProviders = ({ baseURL, purest }) => ({
137
81
  scope: ['user', 'user:email'],
138
82
  },
139
83
  async authCallback({ accessToken }) {
140
- const github = purest({
141
- provider: 'github',
142
- defaults: {
143
- headers: {
144
- 'user-agent': 'strapi',
145
- },
146
- },
84
+ const { body: userBody } = await bearerGet('https://api.github.com/user', accessToken, {
85
+ headers: { 'user-agent': 'strapi' },
147
86
  });
148
87
 
149
- const { body: userBody } = await github.get('user').auth(accessToken).request();
150
-
151
- // This is the public email on the github profile
152
88
  if (userBody.email) {
153
89
  return {
154
90
  username: userBody.login,
155
91
  email: userBody.email,
156
92
  };
157
93
  }
158
- // Get the email with Github's user/emails API
159
- const { body: emailBody } = await github.get('user/emails').auth(accessToken).request();
94
+
95
+ const { body: emailBody } = await bearerGet(
96
+ 'https://api.github.com/user/emails',
97
+ accessToken,
98
+ {
99
+ headers: { 'user-agent': 'strapi' },
100
+ }
101
+ );
160
102
 
161
103
  return {
162
104
  username: userBody.login,
@@ -176,16 +118,11 @@ const initProviders = ({ baseURL, purest }) => ({
176
118
  scope: ['user.read'],
177
119
  },
178
120
  async authCallback({ accessToken }) {
179
- const microsoft = purest({ provider: 'microsoft' });
180
-
181
- return microsoft
182
- .get('me')
183
- .auth(accessToken)
184
- .request()
185
- .then(({ body }) => ({
186
- username: body.userPrincipalName,
187
- email: body.userPrincipalName,
188
- }));
121
+ const { body } = await bearerGet('https://graph.microsoft.com/v1.0/me', accessToken);
122
+ return {
123
+ username: body.userPrincipalName,
124
+ email: body.userPrincipalName,
125
+ };
189
126
  },
190
127
  },
191
128
 
@@ -198,25 +135,20 @@ const initProviders = ({ baseURL, purest }) => ({
198
135
  callbackUrl: `${baseURL}/twitter/callback`,
199
136
  },
200
137
  async authCallback({ accessToken, query, providers }) {
201
- const twitter = purest({
202
- provider: 'twitter',
203
- defaults: {
204
- oauth: {
205
- consumer_key: providers.twitter.key,
206
- consumer_secret: providers.twitter.secret,
207
- },
208
- },
138
+ const { twitterGet } = require('../utils/oauth-connect/oauth1');
139
+ const { body } = await twitterGet({
140
+ url: 'https://api.twitter.com/1.1/account/verify_credentials.json',
141
+ accessToken,
142
+ accessCredential: query.access_secret,
143
+ consumerKey: providers.twitter.key,
144
+ clientCredential: providers.twitter.secret,
145
+ qs: { include_email: 'true', screen_name: query['raw[screen_name]'] },
209
146
  });
210
147
 
211
- return twitter
212
- .get('account/verify_credentials')
213
- .auth(accessToken, query.access_secret)
214
- .qs({ screen_name: query['raw[screen_name]'], include_email: 'true' })
215
- .request()
216
- .then(({ body }) => ({
217
- username: body.screen_name,
218
- email: body.email,
219
- }));
148
+ return {
149
+ username: body.screen_name,
150
+ email: body.email,
151
+ };
220
152
  },
221
153
  },
222
154
  instagram: {
@@ -229,17 +161,13 @@ const initProviders = ({ baseURL, purest }) => ({
229
161
  scope: ['user_profile'],
230
162
  },
231
163
  async authCallback({ accessToken }) {
232
- const instagram = purest({ provider: 'instagram' });
233
-
234
- return instagram
235
- .get('me')
236
- .auth(accessToken)
237
- .qs({ fields: 'id,username' })
238
- .request()
239
- .then(({ body }) => ({
240
- username: body.username,
241
- email: `${body.username}@strapi.io`, // dummy email as Instagram does not provide user email
242
- }));
164
+ const { body } = await bearerGet('https://graph.instagram.com/me', accessToken, {
165
+ qs: { fields: 'id,username' },
166
+ });
167
+ return {
168
+ username: body.username,
169
+ email: `${body.username}@strapi.io`,
170
+ };
243
171
  },
244
172
  },
245
173
  vk: {
@@ -252,17 +180,13 @@ const initProviders = ({ baseURL, purest }) => ({
252
180
  scope: ['email'],
253
181
  },
254
182
  async authCallback({ accessToken, query }) {
255
- const vk = purest({ provider: 'vk' });
256
-
257
- return vk
258
- .get('users')
259
- .auth(accessToken)
260
- .qs({ id: query.raw.user_id, v: '5.122' })
261
- .request()
262
- .then(({ body }) => ({
263
- username: `${body.response[0].last_name} ${body.response[0].first_name}`,
264
- email: query.raw.email,
265
- }));
183
+ const { body } = await bearerGet('https://api.vk.com/method/users.get', accessToken, {
184
+ qs: { user_ids: query.raw.user_id, v: '5.122' },
185
+ });
186
+ return {
187
+ username: `${body.response[0].last_name} ${body.response[0].first_name}`,
188
+ email: query.raw.email,
189
+ };
266
190
  },
267
191
  },
268
192
 
@@ -276,30 +200,15 @@ const initProviders = ({ baseURL, purest }) => ({
276
200
  scope: ['user:read:email'],
277
201
  },
278
202
  async authCallback({ accessToken, providers }) {
279
- const twitch = purest({
280
- provider: 'twitch',
281
- config: {
282
- twitch: {
283
- default: {
284
- origin: 'https://api.twitch.tv',
285
- path: 'helix/{path}',
286
- headers: {
287
- Authorization: 'Bearer {auth}',
288
- 'Client-Id': '{auth}',
289
- },
290
- },
291
- },
203
+ const { body } = await bearerGet('https://api.twitch.tv/helix/users', accessToken, {
204
+ headers: {
205
+ 'Client-Id': providers.twitch.key,
292
206
  },
293
207
  });
294
-
295
- return twitch
296
- .get('users')
297
- .auth(accessToken, providers.twitch.key)
298
- .request()
299
- .then(({ body }) => ({
300
- username: body.data[0].login,
301
- email: body.data[0].email,
302
- }));
208
+ return {
209
+ username: body.data[0].login,
210
+ email: body.data[0].email,
211
+ };
303
212
  },
304
213
  },
305
214
 
@@ -313,21 +222,16 @@ const initProviders = ({ baseURL, purest }) => ({
313
222
  scope: ['r_liteprofile', 'r_emailaddress'],
314
223
  },
315
224
  async authCallback({ accessToken }) {
316
- const linkedIn = purest({ provider: 'linkedin' });
317
- const {
318
- body: { localizedFirstName },
319
- } = await linkedIn.get('me').auth(accessToken).request();
320
- const {
321
- body: { elements },
322
- } = await linkedIn
323
- .get('emailAddress?q=members&projection=(elements*(handle~))')
324
- .auth(accessToken)
325
- .request();
225
+ const { body: profileBody } = await bearerGet('https://api.linkedin.com/v2/me', accessToken);
226
+ const { body: emailBody } = await bearerGet(
227
+ 'https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))',
228
+ accessToken
229
+ );
326
230
 
327
- const email = elements[0]['handle~'];
231
+ const email = emailBody.elements[0]['handle~'];
328
232
 
329
233
  return {
330
- username: localizedFirstName,
234
+ username: profileBody.localizedFirstName,
331
235
  email: email.emailAddress,
332
236
  };
333
237
  },
@@ -346,7 +250,7 @@ const initProviders = ({ baseURL, purest }) => ({
346
250
  async authCallback({ query, providers }) {
347
251
  const jwksUrl = new URL(providers.cognito.jwksurl);
348
252
  const idToken = query.id_token;
349
- const tokenPayload = await getCognitoPayload({ idToken, jwksUrl, purest });
253
+ const tokenPayload = await verifyJwtWithJwks({ idToken, jwksUrl });
350
254
  return {
351
255
  username: tokenPayload['cognito:username'],
352
256
  email: tokenPayload.email,
@@ -364,31 +268,13 @@ const initProviders = ({ baseURL, purest }) => ({
364
268
  scope: ['identity'],
365
269
  },
366
270
  async authCallback({ accessToken }) {
367
- const reddit = purest({
368
- provider: 'reddit',
369
- config: {
370
- reddit: {
371
- default: {
372
- origin: 'https://oauth.reddit.com',
373
- path: 'api/{version}/{path}',
374
- version: 'v1',
375
- headers: {
376
- Authorization: 'Bearer {auth}',
377
- 'user-agent': 'strapi',
378
- },
379
- },
380
- },
381
- },
271
+ const { body } = await bearerGet('https://oauth.reddit.com/api/v1/me', accessToken, {
272
+ headers: { 'user-agent': 'strapi' },
382
273
  });
383
-
384
- return reddit
385
- .get('me')
386
- .auth(accessToken)
387
- .request()
388
- .then(({ body }) => ({
389
- username: body.name,
390
- email: `${body.name}@strapi.io`, // dummy email as Reddit does not provide user email
391
- }));
274
+ return {
275
+ username: body.name,
276
+ email: `${body.name}@strapi.io`,
277
+ };
392
278
  },
393
279
  },
394
280
 
@@ -403,22 +289,17 @@ const initProviders = ({ baseURL, purest }) => ({
403
289
  scope: ['openid', 'email', 'profile'],
404
290
  },
405
291
  async authCallback({ accessToken, providers }) {
406
- const auth0 = purest({ provider: 'auth0' });
407
-
408
- return auth0
409
- .get('userinfo')
410
- .subdomain(providers.auth0.subdomain)
411
- .auth(accessToken)
412
- .request()
413
- .then(({ body }) => {
414
- const username = body.username || body.nickname || body.name || body.email.split('@')[0];
415
- const email = body.email || `${username.replace(/\s+/g, '.')}@strapi.io`;
292
+ const { body } = await bearerGet(
293
+ `https://${providers.auth0.subdomain}.auth0.com/userinfo`,
294
+ accessToken
295
+ );
296
+ const username = body.username || body.nickname || body.name || body.email.split('@')[0];
297
+ const email = body.email || `${username.replace(/\s+/g, '.')}@strapi.io`;
416
298
 
417
- return {
418
- username,
419
- email,
420
- };
421
- });
299
+ return {
300
+ username,
301
+ email,
302
+ };
422
303
  },
423
304
  },
424
305
 
@@ -429,35 +310,29 @@ const initProviders = ({ baseURL, purest }) => ({
429
310
  key: '',
430
311
  secret: '',
431
312
  callback: `${baseURL}/cas/callback`,
432
- scope: ['openid email'], // scopes should be space delimited
313
+ scope: ['openid email'],
433
314
  subdomain: 'my.subdomain.com/cas',
434
315
  },
435
316
  async authCallback({ accessToken, providers }) {
436
- const cas = purest({ provider: 'cas' });
437
-
438
- return cas
439
- .get('oidc/profile')
440
- .subdomain(providers.cas.subdomain)
441
- .auth(accessToken)
442
- .request()
443
- .then(({ body }) => {
444
- // CAS attribute may be in body.attributes or "FLAT", depending on CAS config
445
- const username = body.attributes
446
- ? body.attributes.strapiusername || body.id || body.sub
447
- : body.strapiusername || body.id || body.sub;
448
- const email = body.attributes
449
- ? body.attributes.strapiemail || body.attributes.email
450
- : body.strapiemail || body.email;
451
- if (!username || !email) {
452
- strapi.log.warn(
453
- `CAS Response Body did not contain required attributes: ${JSON.stringify(body)}`
454
- );
455
- }
456
- return {
457
- username,
458
- email,
459
- };
460
- });
317
+ const { body } = await bearerGet(
318
+ `https://${providers.cas.subdomain}/oidc/profile`,
319
+ accessToken
320
+ );
321
+ const username = body.attributes
322
+ ? body.attributes.strapiusername || body.id || body.sub
323
+ : body.strapiusername || body.id || body.sub;
324
+ const email = body.attributes
325
+ ? body.attributes.strapiemail || body.attributes.email
326
+ : body.strapiemail || body.email;
327
+ if (!username || !email) {
328
+ strapi.log.warn(
329
+ `CAS Response Body did not contain required attributes: ${JSON.stringify(body)}`
330
+ );
331
+ }
332
+ return {
333
+ username,
334
+ email,
335
+ };
461
336
  },
462
337
  },
463
338
 
@@ -471,33 +346,15 @@ const initProviders = ({ baseURL, purest }) => ({
471
346
  scope: ['identity', 'identity[email]'],
472
347
  },
473
348
  async authCallback({ accessToken }) {
474
- const patreon = purest({
475
- provider: 'patreon',
476
- config: {
477
- patreon: {
478
- default: {
479
- origin: 'https://www.patreon.com',
480
- path: 'api/oauth2/{path}',
481
- headers: {
482
- authorization: 'Bearer {auth}',
483
- },
484
- },
485
- },
486
- },
487
- });
488
-
489
- return patreon
490
- .get('v2/identity')
491
- .auth(accessToken)
492
- .qs(new URLSearchParams({ 'fields[user]': 'full_name,email' }).toString())
493
- .request()
494
- .then(({ body }) => {
495
- const patreonData = body.data.attributes;
496
- return {
497
- username: patreonData.full_name,
498
- email: patreonData.email,
499
- };
500
- });
349
+ const { body } = await bearerGet(
350
+ 'https://www.patreon.com/api/oauth2/v2/identity?fields[user]=full_name,email',
351
+ accessToken
352
+ );
353
+ const patreonData = body.data.attributes;
354
+ return {
355
+ username: patreonData.full_name,
356
+ email: patreonData.email,
357
+ };
501
358
  },
502
359
  },
503
360
  keycloak: {
@@ -511,34 +368,24 @@ const initProviders = ({ baseURL, purest }) => ({
511
368
  scope: ['openid', 'email', 'profile'],
512
369
  },
513
370
  async authCallback({ accessToken, providers }) {
514
- const keycloak = purest({ provider: 'keycloak' });
515
-
516
- return keycloak
517
- .subdomain(providers.keycloak.subdomain)
518
- .get('protocol/openid-connect/userinfo')
519
- .auth(accessToken)
520
- .request()
521
- .then(({ body }) => {
522
- return {
523
- username: body.preferred_username,
524
- email: body.email,
525
- };
526
- });
371
+ const { body } = await bearerGet(
372
+ `https://${providers.keycloak.subdomain}/protocol/openid-connect/userinfo`,
373
+ accessToken
374
+ );
375
+ return {
376
+ username: body.preferred_username,
377
+ email: body.email,
378
+ };
527
379
  },
528
380
  },
529
381
  });
530
382
 
531
383
  module.exports = () => {
532
- const purest = require('purest');
533
-
534
384
  const apiPrefix = strapi.config.get('api.rest.prefix');
535
385
  const baseURL = urljoin(strapi.config.server.url, apiPrefix, 'auth');
536
386
 
537
- const authProviders = initProviders({ baseURL, purest });
387
+ const authProviders = initProviders({ baseURL });
538
388
 
539
- /**
540
- * @public
541
- */
542
389
  return {
543
390
  getAll() {
544
391
  return authProviders;
@@ -553,15 +400,12 @@ module.exports = () => {
553
400
  delete authProviders[name];
554
401
  },
555
402
 
556
- /**
557
- * @internal
558
- */
559
403
  async run({ provider, accessToken, query, providers }) {
560
404
  const authProvider = authProviders[provider];
561
405
 
562
406
  assert(authProvider, 'Unknown auth provider');
563
407
 
564
- return authProvider.authCallback({ accessToken, query, providers, purest });
408
+ return authProvider.authCallback({ accessToken, query, providers });
565
409
  },
566
410
  };
567
411
  };