@strapi/plugin-users-permissions 0.0.0-next.f0bfcece1007e5aa527570187635aefc86db536e → 0.0.0-next.f0f36e3df4b18f167036dcbca529dcb933bf4e1d

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 (111) hide show
  1. package/admin/src/components/Permissions/PermissionRow/SubCategory.jsx +8 -1
  2. package/admin/src/components/Policies/index.jsx +1 -0
  3. package/admin/src/components/UsersPermissions/index.jsx +1 -0
  4. package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +2 -1
  5. package/admin/src/pages/Providers/index.jsx +74 -76
  6. package/admin/src/pages/Roles/pages/CreatePage.jsx +20 -7
  7. package/admin/src/pages/Roles/pages/EditPage.jsx +12 -7
  8. package/admin/src/pages/Roles/pages/ListPage/index.jsx +91 -93
  9. package/admin/src/translations/en.json +1 -0
  10. package/dist/admin/components/FormModal/Input/index.js.map +1 -1
  11. package/dist/admin/components/FormModal/Input/index.mjs.map +1 -1
  12. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js +3 -1
  13. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js.map +1 -1
  14. package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs +3 -1
  15. package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs.map +1 -1
  16. package/dist/admin/components/Permissions/PermissionRow/index.js.map +1 -1
  17. package/dist/admin/components/Permissions/PermissionRow/index.mjs.map +1 -1
  18. package/dist/admin/components/Policies/index.js +1 -0
  19. package/dist/admin/components/Policies/index.js.map +1 -1
  20. package/dist/admin/components/Policies/index.mjs +1 -0
  21. package/dist/admin/components/Policies/index.mjs.map +1 -1
  22. package/dist/admin/components/UsersPermissions/index.js +1 -0
  23. package/dist/admin/components/UsersPermissions/index.js.map +1 -1
  24. package/dist/admin/components/UsersPermissions/index.mjs +1 -0
  25. package/dist/admin/components/UsersPermissions/index.mjs.map +1 -1
  26. package/dist/admin/pages/EmailTemplates/components/EmailForm.js +2 -1
  27. package/dist/admin/pages/EmailTemplates/components/EmailForm.js.map +1 -1
  28. package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs +2 -1
  29. package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs.map +1 -1
  30. package/dist/admin/pages/Providers/index.js +84 -88
  31. package/dist/admin/pages/Providers/index.js.map +1 -1
  32. package/dist/admin/pages/Providers/index.mjs +84 -88
  33. package/dist/admin/pages/Providers/index.mjs.map +1 -1
  34. package/dist/admin/pages/Roles/pages/CreatePage.js +14 -1
  35. package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -1
  36. package/dist/admin/pages/Roles/pages/CreatePage.mjs +16 -3
  37. package/dist/admin/pages/Roles/pages/CreatePage.mjs.map +1 -1
  38. package/dist/admin/pages/Roles/pages/EditPage.js +13 -3
  39. package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -1
  40. package/dist/admin/pages/Roles/pages/EditPage.mjs +14 -4
  41. package/dist/admin/pages/Roles/pages/EditPage.mjs.map +1 -1
  42. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js.map +1 -1
  43. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.mjs.map +1 -1
  44. package/dist/admin/pages/Roles/pages/ListPage/index.js +95 -99
  45. package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -1
  46. package/dist/admin/pages/Roles/pages/ListPage/index.mjs +95 -99
  47. package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -1
  48. package/dist/admin/translations/en.json.js +1 -0
  49. package/dist/admin/translations/en.json.js.map +1 -1
  50. package/dist/admin/translations/en.json.mjs +1 -0
  51. package/dist/admin/translations/en.json.mjs.map +1 -1
  52. package/dist/admin/utils/getTrad.js.map +1 -1
  53. package/dist/admin/utils/getTrad.mjs.map +1 -1
  54. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
  55. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
  56. package/dist/server/bootstrap/index.js +28 -7
  57. package/dist/server/bootstrap/index.js.map +1 -1
  58. package/dist/server/bootstrap/index.mjs +28 -7
  59. package/dist/server/bootstrap/index.mjs.map +1 -1
  60. package/dist/server/config.js +16 -0
  61. package/dist/server/config.js.map +1 -1
  62. package/dist/server/config.mjs +16 -0
  63. package/dist/server/config.mjs.map +1 -1
  64. package/dist/server/controllers/auth.js +204 -3
  65. package/dist/server/controllers/auth.js.map +1 -1
  66. package/dist/server/controllers/auth.mjs +204 -3
  67. package/dist/server/controllers/auth.mjs.map +1 -1
  68. package/dist/server/controllers/content-manager-user.js.map +1 -1
  69. package/dist/server/controllers/content-manager-user.mjs.map +1 -1
  70. package/dist/server/graphql/resolvers-configs.js.map +1 -1
  71. package/dist/server/graphql/resolvers-configs.mjs.map +1 -1
  72. package/dist/server/middlewares/rateLimit.js.map +1 -1
  73. package/dist/server/middlewares/rateLimit.mjs.map +1 -1
  74. package/dist/server/routes/content-api/auth.js +16 -0
  75. package/dist/server/routes/content-api/auth.js.map +1 -1
  76. package/dist/server/routes/content-api/auth.mjs +16 -0
  77. package/dist/server/routes/content-api/auth.mjs.map +1 -1
  78. package/dist/server/routes/content-api/validation.js +1 -0
  79. package/dist/server/routes/content-api/validation.js.map +1 -1
  80. package/dist/server/routes/content-api/validation.mjs +1 -0
  81. package/dist/server/routes/content-api/validation.mjs.map +1 -1
  82. package/dist/server/services/constants.js +19 -0
  83. package/dist/server/services/constants.js.map +1 -0
  84. package/dist/server/services/constants.mjs +17 -0
  85. package/dist/server/services/constants.mjs.map +1 -0
  86. package/dist/server/services/jwt.js +45 -2
  87. package/dist/server/services/jwt.js.map +1 -1
  88. package/dist/server/services/jwt.mjs +45 -2
  89. package/dist/server/services/jwt.mjs.map +1 -1
  90. package/dist/server/services/providers-registry.js.map +1 -1
  91. package/dist/server/services/providers-registry.mjs.map +1 -1
  92. package/dist/server/services/role.js.map +1 -1
  93. package/dist/server/services/role.mjs.map +1 -1
  94. package/dist/server/services/user.js +29 -20
  95. package/dist/server/services/user.js.map +1 -1
  96. package/dist/server/services/user.mjs +29 -20
  97. package/dist/server/services/user.mjs.map +1 -1
  98. package/dist/server/services/users-permissions.js +8 -0
  99. package/dist/server/services/users-permissions.js.map +1 -1
  100. package/dist/server/services/users-permissions.mjs +8 -0
  101. package/dist/server/services/users-permissions.mjs.map +1 -1
  102. package/package.json +9 -9
  103. package/server/bootstrap/index.js +31 -0
  104. package/server/config.js +22 -0
  105. package/server/controllers/auth.js +248 -8
  106. package/server/routes/content-api/auth.js +12 -0
  107. package/server/routes/content-api/validation.js +1 -0
  108. package/server/services/constants.js +9 -0
  109. package/server/services/jwt.js +50 -2
  110. package/server/services/user.js +11 -0
  111. package/server/services/users-permissions.js +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"providers-registry.js","sources":["../../../server/services/providers-registry.js"],"sourcesContent":["'use strict';\n\nconst { strict: assert } = require('assert');\nconst jwt = require('jsonwebtoken');\nconst urljoin = require('url-join');\nconst jwkToPem = require('jwk-to-pem');\n\nconst getCognitoPayload = async ({ idToken, jwksUrl, purest }) => {\n const {\n header: { kid },\n payload,\n } = jwt.decode(idToken, { complete: true });\n\n if (!payload || !kid) {\n throw new Error('The provided token is not valid');\n }\n\n const config = {\n cognito: {\n discovery: {\n origin: jwksUrl.origin,\n path: jwksUrl.pathname,\n },\n },\n };\n try {\n const cognito = purest({ provider: 'cognito', config });\n // get the JSON Web Key (JWK) for the user pool\n const { body: jwk } = await cognito('discovery').request();\n // Get the key with the same Key ID as the provided token\n const key = jwk.keys.find(({ kid: jwkKid }) => jwkKid === kid);\n const pem = jwkToPem(key);\n\n // https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html\n const decodedToken = await new Promise((resolve, reject) => {\n jwt.verify(idToken, pem, { algorithms: ['RS256'] }, (err, decodedToken) => {\n if (err) {\n reject();\n }\n resolve(decodedToken);\n });\n });\n return decodedToken;\n } catch (err) {\n throw new Error('There was an error verifying the token');\n }\n};\n\nconst initProviders = ({ baseURL, purest }) => ({\n email: {\n enabled: true,\n icon: 'envelope',\n grantConfig: {},\n },\n discord: {\n enabled: false,\n icon: 'discord',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/discord/callback`,\n scope: ['identify', 'email'],\n },\n async authCallback({ accessToken }) {\n const discord = purest({ provider: 'discord' });\n\n return discord\n .get('users/@me')\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n // Combine username and discriminator (if discriminator exists and not equal to 0)\n const username =\n body.discriminator && body.discriminator !== '0'\n ? `${body.username}#${body.discriminator}`\n : body.username;\n return {\n username,\n email: body.email,\n };\n });\n },\n },\n facebook: {\n enabled: false,\n icon: 'facebook-square',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/facebook/callback`,\n scope: ['email'],\n },\n async authCallback({ accessToken }) {\n const facebook = purest({ provider: 'facebook' });\n\n return facebook\n .get('me')\n .auth(accessToken)\n .qs({ fields: 'name,email' })\n .request()\n .then(({ body }) => ({\n username: body.name,\n email: body.email,\n }));\n },\n },\n google: {\n enabled: false,\n icon: 'google',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/google/callback`,\n scope: ['email'],\n },\n async authCallback({ accessToken }) {\n const google = purest({ provider: 'google' });\n\n return google\n .query('oauth')\n .get('tokeninfo')\n .qs({ accessToken })\n .request()\n .then(({ body }) => ({\n username: body.email.split('@')[0],\n email: body.email,\n }));\n },\n },\n github: {\n enabled: false,\n icon: 'github',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/github/callback`,\n scope: ['user', 'user:email'],\n },\n async authCallback({ accessToken }) {\n const github = purest({\n provider: 'github',\n defaults: {\n headers: {\n 'user-agent': 'strapi',\n },\n },\n });\n\n const { body: userBody } = await github.get('user').auth(accessToken).request();\n\n // This is the public email on the github profile\n if (userBody.email) {\n return {\n username: userBody.login,\n email: userBody.email,\n };\n }\n // Get the email with Github's user/emails API\n const { body: emailBody } = await github.get('user/emails').auth(accessToken).request();\n\n return {\n username: userBody.login,\n email: Array.isArray(emailBody)\n ? emailBody.find((email) => email.primary === true).email\n : null,\n };\n },\n },\n microsoft: {\n enabled: false,\n icon: 'windows',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/microsoft/callback`,\n scope: ['user.read'],\n },\n async authCallback({ accessToken }) {\n const microsoft = purest({ provider: 'microsoft' });\n\n return microsoft\n .get('me')\n .auth(accessToken)\n .request()\n .then(({ body }) => ({\n username: body.userPrincipalName,\n email: body.userPrincipalName,\n }));\n },\n },\n\n twitter: {\n enabled: false,\n icon: 'twitter',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/twitter/callback`,\n },\n async authCallback({ accessToken, query, providers }) {\n const twitter = purest({\n provider: 'twitter',\n defaults: {\n oauth: {\n consumer_key: providers.twitter.key,\n consumer_secret: providers.twitter.secret,\n },\n },\n });\n\n return twitter\n .get('account/verify_credentials')\n .auth(accessToken, query.access_secret)\n .qs({ screen_name: query['raw[screen_name]'], include_email: 'true' })\n .request()\n .then(({ body }) => ({\n username: body.screen_name,\n email: body.email,\n }));\n },\n },\n instagram: {\n enabled: false,\n icon: 'instagram',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/instagram/callback`,\n scope: ['user_profile'],\n },\n async authCallback({ accessToken }) {\n const instagram = purest({ provider: 'instagram' });\n\n return instagram\n .get('me')\n .auth(accessToken)\n .qs({ fields: 'id,username' })\n .request()\n .then(({ body }) => ({\n username: body.username,\n email: `${body.username}@strapi.io`, // dummy email as Instagram does not provide user email\n }));\n },\n },\n vk: {\n enabled: false,\n icon: 'vk',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/vk/callback`,\n scope: ['email'],\n },\n async authCallback({ accessToken, query }) {\n const vk = purest({ provider: 'vk' });\n\n return vk\n .get('users')\n .auth(accessToken)\n .qs({ id: query.raw.user_id, v: '5.122' })\n .request()\n .then(({ body }) => ({\n username: `${body.response[0].last_name} ${body.response[0].first_name}`,\n email: query.raw.email,\n }));\n },\n },\n\n twitch: {\n enabled: false,\n icon: 'twitch',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/twitch/callback`,\n scope: ['user:read:email'],\n },\n async authCallback({ accessToken, providers }) {\n const twitch = purest({\n provider: 'twitch',\n config: {\n twitch: {\n default: {\n origin: 'https://api.twitch.tv',\n path: 'helix/{path}',\n headers: {\n Authorization: 'Bearer {auth}',\n 'Client-Id': '{auth}',\n },\n },\n },\n },\n });\n\n return twitch\n .get('users')\n .auth(accessToken, providers.twitch.key)\n .request()\n .then(({ body }) => ({\n username: body.data[0].login,\n email: body.data[0].email,\n }));\n },\n },\n\n linkedin: {\n enabled: false,\n icon: 'linkedin',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/linkedin/callback`,\n scope: ['r_liteprofile', 'r_emailaddress'],\n },\n async authCallback({ accessToken }) {\n const linkedIn = purest({ provider: 'linkedin' });\n const {\n body: { localizedFirstName },\n } = await linkedIn.get('me').auth(accessToken).request();\n const {\n body: { elements },\n } = await linkedIn\n .get('emailAddress?q=members&projection=(elements*(handle~))')\n .auth(accessToken)\n .request();\n\n const email = elements[0]['handle~'];\n\n return {\n username: localizedFirstName,\n email: email.emailAddress,\n };\n },\n },\n\n cognito: {\n enabled: false,\n icon: 'aws',\n grantConfig: {\n key: '',\n secret: '',\n subdomain: 'my.subdomain.com',\n callback: `${baseURL}/cognito/callback`,\n scope: ['email', 'openid', 'profile'],\n },\n async authCallback({ query, providers }) {\n const jwksUrl = new URL(providers.cognito.jwksurl);\n const idToken = query.id_token;\n const tokenPayload = await getCognitoPayload({ idToken, jwksUrl, purest });\n return {\n username: tokenPayload['cognito:username'],\n email: tokenPayload.email,\n };\n },\n },\n\n reddit: {\n enabled: false,\n icon: 'reddit',\n grantConfig: {\n key: '',\n secret: '',\n callback: `${baseURL}/reddit/callback`,\n scope: ['identity'],\n },\n async authCallback({ accessToken }) {\n const reddit = purest({\n provider: 'reddit',\n config: {\n reddit: {\n default: {\n origin: 'https://oauth.reddit.com',\n path: 'api/{version}/{path}',\n version: 'v1',\n headers: {\n Authorization: 'Bearer {auth}',\n 'user-agent': 'strapi',\n },\n },\n },\n },\n });\n\n return reddit\n .get('me')\n .auth(accessToken)\n .request()\n .then(({ body }) => ({\n username: body.name,\n email: `${body.name}@strapi.io`, // dummy email as Reddit does not provide user email\n }));\n },\n },\n\n auth0: {\n enabled: false,\n icon: '',\n grantConfig: {\n key: '',\n secret: '',\n subdomain: 'my-tenant.eu',\n callback: `${baseURL}/auth0/callback`,\n scope: ['openid', 'email', 'profile'],\n },\n async authCallback({ accessToken, providers }) {\n const auth0 = purest({ provider: 'auth0' });\n\n return auth0\n .get('userinfo')\n .subdomain(providers.auth0.subdomain)\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n const username = body.username || body.nickname || body.name || body.email.split('@')[0];\n const email = body.email || `${username.replace(/\\s+/g, '.')}@strapi.io`;\n\n return {\n username,\n email,\n };\n });\n },\n },\n\n cas: {\n enabled: false,\n icon: 'book',\n grantConfig: {\n key: '',\n secret: '',\n callback: `${baseURL}/cas/callback`,\n scope: ['openid email'], // scopes should be space delimited\n subdomain: 'my.subdomain.com/cas',\n },\n async authCallback({ accessToken, providers }) {\n const cas = purest({ provider: 'cas' });\n\n return cas\n .get('oidc/profile')\n .subdomain(providers.cas.subdomain)\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n // CAS attribute may be in body.attributes or \"FLAT\", depending on CAS config\n const username = body.attributes\n ? body.attributes.strapiusername || body.id || body.sub\n : body.strapiusername || body.id || body.sub;\n const email = body.attributes\n ? body.attributes.strapiemail || body.attributes.email\n : body.strapiemail || body.email;\n if (!username || !email) {\n strapi.log.warn(\n `CAS Response Body did not contain required attributes: ${JSON.stringify(body)}`\n );\n }\n return {\n username,\n email,\n };\n });\n },\n },\n\n patreon: {\n enabled: false,\n icon: '',\n grantConfig: {\n key: '',\n secret: '',\n callback: `${baseURL}/patreon/callback`,\n scope: ['identity', 'identity[email]'],\n },\n async authCallback({ accessToken }) {\n const patreon = purest({\n provider: 'patreon',\n config: {\n patreon: {\n default: {\n origin: 'https://www.patreon.com',\n path: 'api/oauth2/{path}',\n headers: {\n authorization: 'Bearer {auth}',\n },\n },\n },\n },\n });\n\n return patreon\n .get('v2/identity')\n .auth(accessToken)\n .qs(new URLSearchParams({ 'fields[user]': 'full_name,email' }).toString())\n .request()\n .then(({ body }) => {\n const patreonData = body.data.attributes;\n return {\n username: patreonData.full_name,\n email: patreonData.email,\n };\n });\n },\n },\n keycloak: {\n enabled: false,\n icon: '',\n grantConfig: {\n key: '',\n secret: '',\n subdomain: 'myKeycloakProvider.com/realms/myrealm',\n callback: `${baseURL}/keycloak/callback`,\n scope: ['openid', 'email', 'profile'],\n },\n async authCallback({ accessToken, providers }) {\n const keycloak = purest({ provider: 'keycloak' });\n\n return keycloak\n .subdomain(providers.keycloak.subdomain)\n .get('protocol/openid-connect/userinfo')\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n return {\n username: body.preferred_username,\n email: body.email,\n };\n });\n },\n },\n});\n\nmodule.exports = () => {\n const purest = require('purest');\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n const baseURL = urljoin(strapi.config.server.url, apiPrefix, 'auth');\n\n const authProviders = initProviders({ baseURL, purest });\n\n /**\n * @public\n */\n return {\n getAll() {\n return authProviders;\n },\n get(name) {\n return authProviders[name];\n },\n add(name, config) {\n authProviders[name] = config;\n },\n remove(name) {\n delete authProviders[name];\n },\n\n /**\n * @internal\n */\n async run({ provider, accessToken, query, providers }) {\n const authProvider = authProviders[provider];\n\n assert(authProvider, 'Unknown auth provider');\n\n return authProvider.authCallback({ accessToken, query, providers, purest });\n },\n };\n};\n"],"names":["strict","assert","require$$0","jwt","require$$1","urljoin","require$$2","jwkToPem","require$$3","getCognitoPayload","idToken","jwksUrl","purest","header","kid","payload","decode","complete","Error","config","cognito","discovery","origin","path","pathname","provider","body","jwk","request","key","keys","find","jwkKid","pem","decodedToken","Promise","resolve","reject","verify","algorithms","err","initProviders","baseURL","email","enabled","icon","grantConfig","discord","secret","callbackUrl","scope","authCallback","accessToken","get","auth","then","username","discriminator","facebook","qs","fields","name","google","query","split","github","defaults","headers","userBody","login","emailBody","Array","isArray","primary","microsoft","userPrincipalName","twitter","providers","oauth","consumer_key","consumer_secret","access_secret","screen_name","include_email","instagram","vk","id","raw","user_id","v","response","last_name","first_name","twitch","default","Authorization","data","linkedin","linkedIn","localizedFirstName","elements","emailAddress","subdomain","callback","URL","jwksurl","id_token","tokenPayload","reddit","version","auth0","nickname","replace","cas","attributes","strapiusername","sub","strapiemail","strapi","log","warn","JSON","stringify","patreon","authorization","URLSearchParams","toString","patreonData","full_name","keycloak","preferred_username","providersRegistry","require$$4","apiPrefix","server","url","authProviders","getAll","add","remove","run","authProvider"],"mappings":"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"}
1
+ {"version":3,"file":"providers-registry.js","sources":["../../../server/services/providers-registry.js"],"sourcesContent":["'use strict';\n\nconst { strict: assert } = require('assert');\nconst jwt = require('jsonwebtoken');\nconst urljoin = require('url-join');\nconst jwkToPem = require('jwk-to-pem');\n\nconst getCognitoPayload = async ({ idToken, jwksUrl, purest }) => {\n const {\n header: { kid },\n payload,\n } = jwt.decode(idToken, { complete: true });\n\n if (!payload || !kid) {\n throw new Error('The provided token is not valid');\n }\n\n const config = {\n cognito: {\n discovery: {\n origin: jwksUrl.origin,\n path: jwksUrl.pathname,\n },\n },\n };\n try {\n const cognito = purest({ provider: 'cognito', config });\n // get the JSON Web Key (JWK) for the user pool\n const { body: jwk } = await cognito('discovery').request();\n // Get the key with the same Key ID as the provided token\n const key = jwk.keys.find(({ kid: jwkKid }) => jwkKid === kid);\n const pem = jwkToPem(key);\n\n // https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html\n const decodedToken = await new Promise((resolve, reject) => {\n jwt.verify(idToken, pem, { algorithms: ['RS256'] }, (err, decodedToken) => {\n if (err) {\n reject();\n }\n resolve(decodedToken);\n });\n });\n return decodedToken;\n } catch (err) {\n throw new Error('There was an error verifying the token');\n }\n};\n\nconst initProviders = ({ baseURL, purest }) => ({\n email: {\n enabled: true,\n icon: 'envelope',\n grantConfig: {},\n },\n discord: {\n enabled: false,\n icon: 'discord',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/discord/callback`,\n scope: ['identify', 'email'],\n },\n async authCallback({ accessToken }) {\n const discord = purest({ provider: 'discord' });\n\n return discord\n .get('users/@me')\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n // Combine username and discriminator (if discriminator exists and not equal to 0)\n const username =\n body.discriminator && body.discriminator !== '0'\n ? `${body.username}#${body.discriminator}`\n : body.username;\n return {\n username,\n email: body.email,\n };\n });\n },\n },\n facebook: {\n enabled: false,\n icon: 'facebook-square',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/facebook/callback`,\n scope: ['email'],\n },\n async authCallback({ accessToken }) {\n const facebook = purest({ provider: 'facebook' });\n\n return facebook\n .get('me')\n .auth(accessToken)\n .qs({ fields: 'name,email' })\n .request()\n .then(({ body }) => ({\n username: body.name,\n email: body.email,\n }));\n },\n },\n google: {\n enabled: false,\n icon: 'google',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/google/callback`,\n scope: ['email'],\n },\n async authCallback({ accessToken }) {\n const google = purest({ provider: 'google' });\n\n return google\n .query('oauth')\n .get('tokeninfo')\n .qs({ accessToken })\n .request()\n .then(({ body }) => ({\n username: body.email.split('@')[0],\n email: body.email,\n }));\n },\n },\n github: {\n enabled: false,\n icon: 'github',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/github/callback`,\n scope: ['user', 'user:email'],\n },\n async authCallback({ accessToken }) {\n const github = purest({\n provider: 'github',\n defaults: {\n headers: {\n 'user-agent': 'strapi',\n },\n },\n });\n\n const { body: userBody } = await github.get('user').auth(accessToken).request();\n\n // This is the public email on the github profile\n if (userBody.email) {\n return {\n username: userBody.login,\n email: userBody.email,\n };\n }\n // Get the email with Github's user/emails API\n const { body: emailBody } = await github.get('user/emails').auth(accessToken).request();\n\n return {\n username: userBody.login,\n email: Array.isArray(emailBody)\n ? emailBody.find((email) => email.primary === true).email\n : null,\n };\n },\n },\n microsoft: {\n enabled: false,\n icon: 'windows',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/microsoft/callback`,\n scope: ['user.read'],\n },\n async authCallback({ accessToken }) {\n const microsoft = purest({ provider: 'microsoft' });\n\n return microsoft\n .get('me')\n .auth(accessToken)\n .request()\n .then(({ body }) => ({\n username: body.userPrincipalName,\n email: body.userPrincipalName,\n }));\n },\n },\n\n twitter: {\n enabled: false,\n icon: 'twitter',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/twitter/callback`,\n },\n async authCallback({ accessToken, query, providers }) {\n const twitter = purest({\n provider: 'twitter',\n defaults: {\n oauth: {\n consumer_key: providers.twitter.key,\n consumer_secret: providers.twitter.secret,\n },\n },\n });\n\n return twitter\n .get('account/verify_credentials')\n .auth(accessToken, query.access_secret)\n .qs({ screen_name: query['raw[screen_name]'], include_email: 'true' })\n .request()\n .then(({ body }) => ({\n username: body.screen_name,\n email: body.email,\n }));\n },\n },\n instagram: {\n enabled: false,\n icon: 'instagram',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/instagram/callback`,\n scope: ['user_profile'],\n },\n async authCallback({ accessToken }) {\n const instagram = purest({ provider: 'instagram' });\n\n return instagram\n .get('me')\n .auth(accessToken)\n .qs({ fields: 'id,username' })\n .request()\n .then(({ body }) => ({\n username: body.username,\n email: `${body.username}@strapi.io`, // dummy email as Instagram does not provide user email\n }));\n },\n },\n vk: {\n enabled: false,\n icon: 'vk',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/vk/callback`,\n scope: ['email'],\n },\n async authCallback({ accessToken, query }) {\n const vk = purest({ provider: 'vk' });\n\n return vk\n .get('users')\n .auth(accessToken)\n .qs({ id: query.raw.user_id, v: '5.122' })\n .request()\n .then(({ body }) => ({\n username: `${body.response[0].last_name} ${body.response[0].first_name}`,\n email: query.raw.email,\n }));\n },\n },\n\n twitch: {\n enabled: false,\n icon: 'twitch',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/twitch/callback`,\n scope: ['user:read:email'],\n },\n async authCallback({ accessToken, providers }) {\n const twitch = purest({\n provider: 'twitch',\n config: {\n twitch: {\n default: {\n origin: 'https://api.twitch.tv',\n path: 'helix/{path}',\n headers: {\n Authorization: 'Bearer {auth}',\n 'Client-Id': '{auth}',\n },\n },\n },\n },\n });\n\n return twitch\n .get('users')\n .auth(accessToken, providers.twitch.key)\n .request()\n .then(({ body }) => ({\n username: body.data[0].login,\n email: body.data[0].email,\n }));\n },\n },\n\n linkedin: {\n enabled: false,\n icon: 'linkedin',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/linkedin/callback`,\n scope: ['r_liteprofile', 'r_emailaddress'],\n },\n async authCallback({ accessToken }) {\n const linkedIn = purest({ provider: 'linkedin' });\n const {\n body: { localizedFirstName },\n } = await linkedIn.get('me').auth(accessToken).request();\n const {\n body: { elements },\n } = await linkedIn\n .get('emailAddress?q=members&projection=(elements*(handle~))')\n .auth(accessToken)\n .request();\n\n const email = elements[0]['handle~'];\n\n return {\n username: localizedFirstName,\n email: email.emailAddress,\n };\n },\n },\n\n cognito: {\n enabled: false,\n icon: 'aws',\n grantConfig: {\n key: '',\n secret: '',\n subdomain: 'my.subdomain.com',\n callback: `${baseURL}/cognito/callback`,\n scope: ['email', 'openid', 'profile'],\n },\n async authCallback({ query, providers }) {\n const jwksUrl = new URL(providers.cognito.jwksurl);\n const idToken = query.id_token;\n const tokenPayload = await getCognitoPayload({ idToken, jwksUrl, purest });\n return {\n username: tokenPayload['cognito:username'],\n email: tokenPayload.email,\n };\n },\n },\n\n reddit: {\n enabled: false,\n icon: 'reddit',\n grantConfig: {\n key: '',\n secret: '',\n callback: `${baseURL}/reddit/callback`,\n scope: ['identity'],\n },\n async authCallback({ accessToken }) {\n const reddit = purest({\n provider: 'reddit',\n config: {\n reddit: {\n default: {\n origin: 'https://oauth.reddit.com',\n path: 'api/{version}/{path}',\n version: 'v1',\n headers: {\n Authorization: 'Bearer {auth}',\n 'user-agent': 'strapi',\n },\n },\n },\n },\n });\n\n return reddit\n .get('me')\n .auth(accessToken)\n .request()\n .then(({ body }) => ({\n username: body.name,\n email: `${body.name}@strapi.io`, // dummy email as Reddit does not provide user email\n }));\n },\n },\n\n auth0: {\n enabled: false,\n icon: '',\n grantConfig: {\n key: '',\n secret: '',\n subdomain: 'my-tenant.eu',\n callback: `${baseURL}/auth0/callback`,\n scope: ['openid', 'email', 'profile'],\n },\n async authCallback({ accessToken, providers }) {\n const auth0 = purest({ provider: 'auth0' });\n\n return auth0\n .get('userinfo')\n .subdomain(providers.auth0.subdomain)\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n const username = body.username || body.nickname || body.name || body.email.split('@')[0];\n const email = body.email || `${username.replace(/\\s+/g, '.')}@strapi.io`;\n\n return {\n username,\n email,\n };\n });\n },\n },\n\n cas: {\n enabled: false,\n icon: 'book',\n grantConfig: {\n key: '',\n secret: '',\n callback: `${baseURL}/cas/callback`,\n scope: ['openid email'], // scopes should be space delimited\n subdomain: 'my.subdomain.com/cas',\n },\n async authCallback({ accessToken, providers }) {\n const cas = purest({ provider: 'cas' });\n\n return cas\n .get('oidc/profile')\n .subdomain(providers.cas.subdomain)\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n // CAS attribute may be in body.attributes or \"FLAT\", depending on CAS config\n const username = body.attributes\n ? body.attributes.strapiusername || body.id || body.sub\n : body.strapiusername || body.id || body.sub;\n const email = body.attributes\n ? body.attributes.strapiemail || body.attributes.email\n : body.strapiemail || body.email;\n if (!username || !email) {\n strapi.log.warn(\n `CAS Response Body did not contain required attributes: ${JSON.stringify(body)}`\n );\n }\n return {\n username,\n email,\n };\n });\n },\n },\n\n patreon: {\n enabled: false,\n icon: '',\n grantConfig: {\n key: '',\n secret: '',\n callback: `${baseURL}/patreon/callback`,\n scope: ['identity', 'identity[email]'],\n },\n async authCallback({ accessToken }) {\n const patreon = purest({\n provider: 'patreon',\n config: {\n patreon: {\n default: {\n origin: 'https://www.patreon.com',\n path: 'api/oauth2/{path}',\n headers: {\n authorization: 'Bearer {auth}',\n },\n },\n },\n },\n });\n\n return patreon\n .get('v2/identity')\n .auth(accessToken)\n .qs(new URLSearchParams({ 'fields[user]': 'full_name,email' }).toString())\n .request()\n .then(({ body }) => {\n const patreonData = body.data.attributes;\n return {\n username: patreonData.full_name,\n email: patreonData.email,\n };\n });\n },\n },\n keycloak: {\n enabled: false,\n icon: '',\n grantConfig: {\n key: '',\n secret: '',\n subdomain: 'myKeycloakProvider.com/realms/myrealm',\n callback: `${baseURL}/keycloak/callback`,\n scope: ['openid', 'email', 'profile'],\n },\n async authCallback({ accessToken, providers }) {\n const keycloak = purest({ provider: 'keycloak' });\n\n return keycloak\n .subdomain(providers.keycloak.subdomain)\n .get('protocol/openid-connect/userinfo')\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n return {\n username: body.preferred_username,\n email: body.email,\n };\n });\n },\n },\n});\n\nmodule.exports = () => {\n const purest = require('purest');\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n const baseURL = urljoin(strapi.config.server.url, apiPrefix, 'auth');\n\n const authProviders = initProviders({ baseURL, purest });\n\n /**\n * @public\n */\n return {\n getAll() {\n return authProviders;\n },\n get(name) {\n return authProviders[name];\n },\n add(name, config) {\n authProviders[name] = config;\n },\n remove(name) {\n delete authProviders[name];\n },\n\n /**\n * @internal\n */\n async run({ provider, accessToken, query, providers }) {\n const authProvider = authProviders[provider];\n\n assert(authProvider, 'Unknown auth provider');\n\n return authProvider.authCallback({ accessToken, query, providers, purest });\n },\n };\n};\n"],"names":["strict","assert","require$$0","jwt","require$$1","urljoin","require$$2","jwkToPem","require$$3","getCognitoPayload","idToken","jwksUrl","purest","header","kid","payload","decode","complete","Error","config","cognito","discovery","origin","path","pathname","provider","body","jwk","request","key","keys","find","jwkKid","pem","decodedToken","Promise","resolve","reject","verify","algorithms","err","initProviders","baseURL","email","enabled","icon","grantConfig","discord","secret","callbackUrl","scope","authCallback","accessToken","get","auth","then","username","discriminator","facebook","qs","fields","name","google","query","split","github","defaults","headers","userBody","login","emailBody","Array","isArray","primary","microsoft","userPrincipalName","twitter","providers","oauth","consumer_key","consumer_secret","access_secret","screen_name","include_email","instagram","vk","id","raw","user_id","v","response","last_name","first_name","twitch","default","Authorization","data","linkedin","linkedIn","localizedFirstName","elements","emailAddress","subdomain","callback","URL","jwksurl","id_token","tokenPayload","reddit","version","auth0","nickname","replace","cas","attributes","strapiusername","sub","strapiemail","strapi","log","warn","JSON","stringify","patreon","authorization","URLSearchParams","toString","patreonData","full_name","keycloak","preferred_username","providersRegistry","require$$4","apiPrefix","server","url","authProviders","getAll","add","remove","run","authProvider"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"providers-registry.mjs","sources":["../../../server/services/providers-registry.js"],"sourcesContent":["'use strict';\n\nconst { strict: assert } = require('assert');\nconst jwt = require('jsonwebtoken');\nconst urljoin = require('url-join');\nconst jwkToPem = require('jwk-to-pem');\n\nconst getCognitoPayload = async ({ idToken, jwksUrl, purest }) => {\n const {\n header: { kid },\n payload,\n } = jwt.decode(idToken, { complete: true });\n\n if (!payload || !kid) {\n throw new Error('The provided token is not valid');\n }\n\n const config = {\n cognito: {\n discovery: {\n origin: jwksUrl.origin,\n path: jwksUrl.pathname,\n },\n },\n };\n try {\n const cognito = purest({ provider: 'cognito', config });\n // get the JSON Web Key (JWK) for the user pool\n const { body: jwk } = await cognito('discovery').request();\n // Get the key with the same Key ID as the provided token\n const key = jwk.keys.find(({ kid: jwkKid }) => jwkKid === kid);\n const pem = jwkToPem(key);\n\n // https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html\n const decodedToken = await new Promise((resolve, reject) => {\n jwt.verify(idToken, pem, { algorithms: ['RS256'] }, (err, decodedToken) => {\n if (err) {\n reject();\n }\n resolve(decodedToken);\n });\n });\n return decodedToken;\n } catch (err) {\n throw new Error('There was an error verifying the token');\n }\n};\n\nconst initProviders = ({ baseURL, purest }) => ({\n email: {\n enabled: true,\n icon: 'envelope',\n grantConfig: {},\n },\n discord: {\n enabled: false,\n icon: 'discord',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/discord/callback`,\n scope: ['identify', 'email'],\n },\n async authCallback({ accessToken }) {\n const discord = purest({ provider: 'discord' });\n\n return discord\n .get('users/@me')\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n // Combine username and discriminator (if discriminator exists and not equal to 0)\n const username =\n body.discriminator && body.discriminator !== '0'\n ? `${body.username}#${body.discriminator}`\n : body.username;\n return {\n username,\n email: body.email,\n };\n });\n },\n },\n facebook: {\n enabled: false,\n icon: 'facebook-square',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/facebook/callback`,\n scope: ['email'],\n },\n async authCallback({ accessToken }) {\n const facebook = purest({ provider: 'facebook' });\n\n return facebook\n .get('me')\n .auth(accessToken)\n .qs({ fields: 'name,email' })\n .request()\n .then(({ body }) => ({\n username: body.name,\n email: body.email,\n }));\n },\n },\n google: {\n enabled: false,\n icon: 'google',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/google/callback`,\n scope: ['email'],\n },\n async authCallback({ accessToken }) {\n const google = purest({ provider: 'google' });\n\n return google\n .query('oauth')\n .get('tokeninfo')\n .qs({ accessToken })\n .request()\n .then(({ body }) => ({\n username: body.email.split('@')[0],\n email: body.email,\n }));\n },\n },\n github: {\n enabled: false,\n icon: 'github',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/github/callback`,\n scope: ['user', 'user:email'],\n },\n async authCallback({ accessToken }) {\n const github = purest({\n provider: 'github',\n defaults: {\n headers: {\n 'user-agent': 'strapi',\n },\n },\n });\n\n const { body: userBody } = await github.get('user').auth(accessToken).request();\n\n // This is the public email on the github profile\n if (userBody.email) {\n return {\n username: userBody.login,\n email: userBody.email,\n };\n }\n // Get the email with Github's user/emails API\n const { body: emailBody } = await github.get('user/emails').auth(accessToken).request();\n\n return {\n username: userBody.login,\n email: Array.isArray(emailBody)\n ? emailBody.find((email) => email.primary === true).email\n : null,\n };\n },\n },\n microsoft: {\n enabled: false,\n icon: 'windows',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/microsoft/callback`,\n scope: ['user.read'],\n },\n async authCallback({ accessToken }) {\n const microsoft = purest({ provider: 'microsoft' });\n\n return microsoft\n .get('me')\n .auth(accessToken)\n .request()\n .then(({ body }) => ({\n username: body.userPrincipalName,\n email: body.userPrincipalName,\n }));\n },\n },\n\n twitter: {\n enabled: false,\n icon: 'twitter',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/twitter/callback`,\n },\n async authCallback({ accessToken, query, providers }) {\n const twitter = purest({\n provider: 'twitter',\n defaults: {\n oauth: {\n consumer_key: providers.twitter.key,\n consumer_secret: providers.twitter.secret,\n },\n },\n });\n\n return twitter\n .get('account/verify_credentials')\n .auth(accessToken, query.access_secret)\n .qs({ screen_name: query['raw[screen_name]'], include_email: 'true' })\n .request()\n .then(({ body }) => ({\n username: body.screen_name,\n email: body.email,\n }));\n },\n },\n instagram: {\n enabled: false,\n icon: 'instagram',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/instagram/callback`,\n scope: ['user_profile'],\n },\n async authCallback({ accessToken }) {\n const instagram = purest({ provider: 'instagram' });\n\n return instagram\n .get('me')\n .auth(accessToken)\n .qs({ fields: 'id,username' })\n .request()\n .then(({ body }) => ({\n username: body.username,\n email: `${body.username}@strapi.io`, // dummy email as Instagram does not provide user email\n }));\n },\n },\n vk: {\n enabled: false,\n icon: 'vk',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/vk/callback`,\n scope: ['email'],\n },\n async authCallback({ accessToken, query }) {\n const vk = purest({ provider: 'vk' });\n\n return vk\n .get('users')\n .auth(accessToken)\n .qs({ id: query.raw.user_id, v: '5.122' })\n .request()\n .then(({ body }) => ({\n username: `${body.response[0].last_name} ${body.response[0].first_name}`,\n email: query.raw.email,\n }));\n },\n },\n\n twitch: {\n enabled: false,\n icon: 'twitch',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/twitch/callback`,\n scope: ['user:read:email'],\n },\n async authCallback({ accessToken, providers }) {\n const twitch = purest({\n provider: 'twitch',\n config: {\n twitch: {\n default: {\n origin: 'https://api.twitch.tv',\n path: 'helix/{path}',\n headers: {\n Authorization: 'Bearer {auth}',\n 'Client-Id': '{auth}',\n },\n },\n },\n },\n });\n\n return twitch\n .get('users')\n .auth(accessToken, providers.twitch.key)\n .request()\n .then(({ body }) => ({\n username: body.data[0].login,\n email: body.data[0].email,\n }));\n },\n },\n\n linkedin: {\n enabled: false,\n icon: 'linkedin',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/linkedin/callback`,\n scope: ['r_liteprofile', 'r_emailaddress'],\n },\n async authCallback({ accessToken }) {\n const linkedIn = purest({ provider: 'linkedin' });\n const {\n body: { localizedFirstName },\n } = await linkedIn.get('me').auth(accessToken).request();\n const {\n body: { elements },\n } = await linkedIn\n .get('emailAddress?q=members&projection=(elements*(handle~))')\n .auth(accessToken)\n .request();\n\n const email = elements[0]['handle~'];\n\n return {\n username: localizedFirstName,\n email: email.emailAddress,\n };\n },\n },\n\n cognito: {\n enabled: false,\n icon: 'aws',\n grantConfig: {\n key: '',\n secret: '',\n subdomain: 'my.subdomain.com',\n callback: `${baseURL}/cognito/callback`,\n scope: ['email', 'openid', 'profile'],\n },\n async authCallback({ query, providers }) {\n const jwksUrl = new URL(providers.cognito.jwksurl);\n const idToken = query.id_token;\n const tokenPayload = await getCognitoPayload({ idToken, jwksUrl, purest });\n return {\n username: tokenPayload['cognito:username'],\n email: tokenPayload.email,\n };\n },\n },\n\n reddit: {\n enabled: false,\n icon: 'reddit',\n grantConfig: {\n key: '',\n secret: '',\n callback: `${baseURL}/reddit/callback`,\n scope: ['identity'],\n },\n async authCallback({ accessToken }) {\n const reddit = purest({\n provider: 'reddit',\n config: {\n reddit: {\n default: {\n origin: 'https://oauth.reddit.com',\n path: 'api/{version}/{path}',\n version: 'v1',\n headers: {\n Authorization: 'Bearer {auth}',\n 'user-agent': 'strapi',\n },\n },\n },\n },\n });\n\n return reddit\n .get('me')\n .auth(accessToken)\n .request()\n .then(({ body }) => ({\n username: body.name,\n email: `${body.name}@strapi.io`, // dummy email as Reddit does not provide user email\n }));\n },\n },\n\n auth0: {\n enabled: false,\n icon: '',\n grantConfig: {\n key: '',\n secret: '',\n subdomain: 'my-tenant.eu',\n callback: `${baseURL}/auth0/callback`,\n scope: ['openid', 'email', 'profile'],\n },\n async authCallback({ accessToken, providers }) {\n const auth0 = purest({ provider: 'auth0' });\n\n return auth0\n .get('userinfo')\n .subdomain(providers.auth0.subdomain)\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n const username = body.username || body.nickname || body.name || body.email.split('@')[0];\n const email = body.email || `${username.replace(/\\s+/g, '.')}@strapi.io`;\n\n return {\n username,\n email,\n };\n });\n },\n },\n\n cas: {\n enabled: false,\n icon: 'book',\n grantConfig: {\n key: '',\n secret: '',\n callback: `${baseURL}/cas/callback`,\n scope: ['openid email'], // scopes should be space delimited\n subdomain: 'my.subdomain.com/cas',\n },\n async authCallback({ accessToken, providers }) {\n const cas = purest({ provider: 'cas' });\n\n return cas\n .get('oidc/profile')\n .subdomain(providers.cas.subdomain)\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n // CAS attribute may be in body.attributes or \"FLAT\", depending on CAS config\n const username = body.attributes\n ? body.attributes.strapiusername || body.id || body.sub\n : body.strapiusername || body.id || body.sub;\n const email = body.attributes\n ? body.attributes.strapiemail || body.attributes.email\n : body.strapiemail || body.email;\n if (!username || !email) {\n strapi.log.warn(\n `CAS Response Body did not contain required attributes: ${JSON.stringify(body)}`\n );\n }\n return {\n username,\n email,\n };\n });\n },\n },\n\n patreon: {\n enabled: false,\n icon: '',\n grantConfig: {\n key: '',\n secret: '',\n callback: `${baseURL}/patreon/callback`,\n scope: ['identity', 'identity[email]'],\n },\n async authCallback({ accessToken }) {\n const patreon = purest({\n provider: 'patreon',\n config: {\n patreon: {\n default: {\n origin: 'https://www.patreon.com',\n path: 'api/oauth2/{path}',\n headers: {\n authorization: 'Bearer {auth}',\n },\n },\n },\n },\n });\n\n return patreon\n .get('v2/identity')\n .auth(accessToken)\n .qs(new URLSearchParams({ 'fields[user]': 'full_name,email' }).toString())\n .request()\n .then(({ body }) => {\n const patreonData = body.data.attributes;\n return {\n username: patreonData.full_name,\n email: patreonData.email,\n };\n });\n },\n },\n keycloak: {\n enabled: false,\n icon: '',\n grantConfig: {\n key: '',\n secret: '',\n subdomain: 'myKeycloakProvider.com/realms/myrealm',\n callback: `${baseURL}/keycloak/callback`,\n scope: ['openid', 'email', 'profile'],\n },\n async authCallback({ accessToken, providers }) {\n const keycloak = purest({ provider: 'keycloak' });\n\n return keycloak\n .subdomain(providers.keycloak.subdomain)\n .get('protocol/openid-connect/userinfo')\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n return {\n username: body.preferred_username,\n email: body.email,\n };\n });\n },\n },\n});\n\nmodule.exports = () => {\n const purest = require('purest');\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n const baseURL = urljoin(strapi.config.server.url, apiPrefix, 'auth');\n\n const authProviders = initProviders({ baseURL, purest });\n\n /**\n * @public\n */\n return {\n getAll() {\n return authProviders;\n },\n get(name) {\n return authProviders[name];\n },\n add(name, config) {\n authProviders[name] = config;\n },\n remove(name) {\n delete authProviders[name];\n },\n\n /**\n * @internal\n */\n async run({ provider, accessToken, query, providers }) {\n const authProvider = authProviders[provider];\n\n assert(authProvider, 'Unknown auth provider');\n\n return authProvider.authCallback({ accessToken, query, providers, purest });\n },\n };\n};\n"],"names":["strict","assert","require$$0","jwt","require$$1","urljoin","require$$2","jwkToPem","require$$3","getCognitoPayload","idToken","jwksUrl","purest","header","kid","payload","decode","complete","Error","config","cognito","discovery","origin","path","pathname","provider","body","jwk","request","key","keys","find","jwkKid","pem","decodedToken","Promise","resolve","reject","verify","algorithms","err","initProviders","baseURL","email","enabled","icon","grantConfig","discord","secret","callbackUrl","scope","authCallback","accessToken","get","auth","then","username","discriminator","facebook","qs","fields","name","google","query","split","github","defaults","headers","userBody","login","emailBody","Array","isArray","primary","microsoft","userPrincipalName","twitter","providers","oauth","consumer_key","consumer_secret","access_secret","screen_name","include_email","instagram","vk","id","raw","user_id","v","response","last_name","first_name","twitch","default","Authorization","data","linkedin","linkedIn","localizedFirstName","elements","emailAddress","subdomain","callback","URL","jwksurl","id_token","tokenPayload","reddit","version","auth0","nickname","replace","cas","attributes","strapiusername","sub","strapiemail","strapi","log","warn","JSON","stringify","patreon","authorization","URLSearchParams","toString","patreonData","full_name","keycloak","preferred_username","providersRegistry","require$$4","apiPrefix","server","url","authProviders","getAll","add","remove","run","authProvider"],"mappings":"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"}
1
+ {"version":3,"file":"providers-registry.mjs","sources":["../../../server/services/providers-registry.js"],"sourcesContent":["'use strict';\n\nconst { strict: assert } = require('assert');\nconst jwt = require('jsonwebtoken');\nconst urljoin = require('url-join');\nconst jwkToPem = require('jwk-to-pem');\n\nconst getCognitoPayload = async ({ idToken, jwksUrl, purest }) => {\n const {\n header: { kid },\n payload,\n } = jwt.decode(idToken, { complete: true });\n\n if (!payload || !kid) {\n throw new Error('The provided token is not valid');\n }\n\n const config = {\n cognito: {\n discovery: {\n origin: jwksUrl.origin,\n path: jwksUrl.pathname,\n },\n },\n };\n try {\n const cognito = purest({ provider: 'cognito', config });\n // get the JSON Web Key (JWK) for the user pool\n const { body: jwk } = await cognito('discovery').request();\n // Get the key with the same Key ID as the provided token\n const key = jwk.keys.find(({ kid: jwkKid }) => jwkKid === kid);\n const pem = jwkToPem(key);\n\n // https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html\n const decodedToken = await new Promise((resolve, reject) => {\n jwt.verify(idToken, pem, { algorithms: ['RS256'] }, (err, decodedToken) => {\n if (err) {\n reject();\n }\n resolve(decodedToken);\n });\n });\n return decodedToken;\n } catch (err) {\n throw new Error('There was an error verifying the token');\n }\n};\n\nconst initProviders = ({ baseURL, purest }) => ({\n email: {\n enabled: true,\n icon: 'envelope',\n grantConfig: {},\n },\n discord: {\n enabled: false,\n icon: 'discord',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/discord/callback`,\n scope: ['identify', 'email'],\n },\n async authCallback({ accessToken }) {\n const discord = purest({ provider: 'discord' });\n\n return discord\n .get('users/@me')\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n // Combine username and discriminator (if discriminator exists and not equal to 0)\n const username =\n body.discriminator && body.discriminator !== '0'\n ? `${body.username}#${body.discriminator}`\n : body.username;\n return {\n username,\n email: body.email,\n };\n });\n },\n },\n facebook: {\n enabled: false,\n icon: 'facebook-square',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/facebook/callback`,\n scope: ['email'],\n },\n async authCallback({ accessToken }) {\n const facebook = purest({ provider: 'facebook' });\n\n return facebook\n .get('me')\n .auth(accessToken)\n .qs({ fields: 'name,email' })\n .request()\n .then(({ body }) => ({\n username: body.name,\n email: body.email,\n }));\n },\n },\n google: {\n enabled: false,\n icon: 'google',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/google/callback`,\n scope: ['email'],\n },\n async authCallback({ accessToken }) {\n const google = purest({ provider: 'google' });\n\n return google\n .query('oauth')\n .get('tokeninfo')\n .qs({ accessToken })\n .request()\n .then(({ body }) => ({\n username: body.email.split('@')[0],\n email: body.email,\n }));\n },\n },\n github: {\n enabled: false,\n icon: 'github',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/github/callback`,\n scope: ['user', 'user:email'],\n },\n async authCallback({ accessToken }) {\n const github = purest({\n provider: 'github',\n defaults: {\n headers: {\n 'user-agent': 'strapi',\n },\n },\n });\n\n const { body: userBody } = await github.get('user').auth(accessToken).request();\n\n // This is the public email on the github profile\n if (userBody.email) {\n return {\n username: userBody.login,\n email: userBody.email,\n };\n }\n // Get the email with Github's user/emails API\n const { body: emailBody } = await github.get('user/emails').auth(accessToken).request();\n\n return {\n username: userBody.login,\n email: Array.isArray(emailBody)\n ? emailBody.find((email) => email.primary === true).email\n : null,\n };\n },\n },\n microsoft: {\n enabled: false,\n icon: 'windows',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/microsoft/callback`,\n scope: ['user.read'],\n },\n async authCallback({ accessToken }) {\n const microsoft = purest({ provider: 'microsoft' });\n\n return microsoft\n .get('me')\n .auth(accessToken)\n .request()\n .then(({ body }) => ({\n username: body.userPrincipalName,\n email: body.userPrincipalName,\n }));\n },\n },\n\n twitter: {\n enabled: false,\n icon: 'twitter',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/twitter/callback`,\n },\n async authCallback({ accessToken, query, providers }) {\n const twitter = purest({\n provider: 'twitter',\n defaults: {\n oauth: {\n consumer_key: providers.twitter.key,\n consumer_secret: providers.twitter.secret,\n },\n },\n });\n\n return twitter\n .get('account/verify_credentials')\n .auth(accessToken, query.access_secret)\n .qs({ screen_name: query['raw[screen_name]'], include_email: 'true' })\n .request()\n .then(({ body }) => ({\n username: body.screen_name,\n email: body.email,\n }));\n },\n },\n instagram: {\n enabled: false,\n icon: 'instagram',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/instagram/callback`,\n scope: ['user_profile'],\n },\n async authCallback({ accessToken }) {\n const instagram = purest({ provider: 'instagram' });\n\n return instagram\n .get('me')\n .auth(accessToken)\n .qs({ fields: 'id,username' })\n .request()\n .then(({ body }) => ({\n username: body.username,\n email: `${body.username}@strapi.io`, // dummy email as Instagram does not provide user email\n }));\n },\n },\n vk: {\n enabled: false,\n icon: 'vk',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/vk/callback`,\n scope: ['email'],\n },\n async authCallback({ accessToken, query }) {\n const vk = purest({ provider: 'vk' });\n\n return vk\n .get('users')\n .auth(accessToken)\n .qs({ id: query.raw.user_id, v: '5.122' })\n .request()\n .then(({ body }) => ({\n username: `${body.response[0].last_name} ${body.response[0].first_name}`,\n email: query.raw.email,\n }));\n },\n },\n\n twitch: {\n enabled: false,\n icon: 'twitch',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/twitch/callback`,\n scope: ['user:read:email'],\n },\n async authCallback({ accessToken, providers }) {\n const twitch = purest({\n provider: 'twitch',\n config: {\n twitch: {\n default: {\n origin: 'https://api.twitch.tv',\n path: 'helix/{path}',\n headers: {\n Authorization: 'Bearer {auth}',\n 'Client-Id': '{auth}',\n },\n },\n },\n },\n });\n\n return twitch\n .get('users')\n .auth(accessToken, providers.twitch.key)\n .request()\n .then(({ body }) => ({\n username: body.data[0].login,\n email: body.data[0].email,\n }));\n },\n },\n\n linkedin: {\n enabled: false,\n icon: 'linkedin',\n grantConfig: {\n key: '',\n secret: '',\n callbackUrl: `${baseURL}/linkedin/callback`,\n scope: ['r_liteprofile', 'r_emailaddress'],\n },\n async authCallback({ accessToken }) {\n const linkedIn = purest({ provider: 'linkedin' });\n const {\n body: { localizedFirstName },\n } = await linkedIn.get('me').auth(accessToken).request();\n const {\n body: { elements },\n } = await linkedIn\n .get('emailAddress?q=members&projection=(elements*(handle~))')\n .auth(accessToken)\n .request();\n\n const email = elements[0]['handle~'];\n\n return {\n username: localizedFirstName,\n email: email.emailAddress,\n };\n },\n },\n\n cognito: {\n enabled: false,\n icon: 'aws',\n grantConfig: {\n key: '',\n secret: '',\n subdomain: 'my.subdomain.com',\n callback: `${baseURL}/cognito/callback`,\n scope: ['email', 'openid', 'profile'],\n },\n async authCallback({ query, providers }) {\n const jwksUrl = new URL(providers.cognito.jwksurl);\n const idToken = query.id_token;\n const tokenPayload = await getCognitoPayload({ idToken, jwksUrl, purest });\n return {\n username: tokenPayload['cognito:username'],\n email: tokenPayload.email,\n };\n },\n },\n\n reddit: {\n enabled: false,\n icon: 'reddit',\n grantConfig: {\n key: '',\n secret: '',\n callback: `${baseURL}/reddit/callback`,\n scope: ['identity'],\n },\n async authCallback({ accessToken }) {\n const reddit = purest({\n provider: 'reddit',\n config: {\n reddit: {\n default: {\n origin: 'https://oauth.reddit.com',\n path: 'api/{version}/{path}',\n version: 'v1',\n headers: {\n Authorization: 'Bearer {auth}',\n 'user-agent': 'strapi',\n },\n },\n },\n },\n });\n\n return reddit\n .get('me')\n .auth(accessToken)\n .request()\n .then(({ body }) => ({\n username: body.name,\n email: `${body.name}@strapi.io`, // dummy email as Reddit does not provide user email\n }));\n },\n },\n\n auth0: {\n enabled: false,\n icon: '',\n grantConfig: {\n key: '',\n secret: '',\n subdomain: 'my-tenant.eu',\n callback: `${baseURL}/auth0/callback`,\n scope: ['openid', 'email', 'profile'],\n },\n async authCallback({ accessToken, providers }) {\n const auth0 = purest({ provider: 'auth0' });\n\n return auth0\n .get('userinfo')\n .subdomain(providers.auth0.subdomain)\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n const username = body.username || body.nickname || body.name || body.email.split('@')[0];\n const email = body.email || `${username.replace(/\\s+/g, '.')}@strapi.io`;\n\n return {\n username,\n email,\n };\n });\n },\n },\n\n cas: {\n enabled: false,\n icon: 'book',\n grantConfig: {\n key: '',\n secret: '',\n callback: `${baseURL}/cas/callback`,\n scope: ['openid email'], // scopes should be space delimited\n subdomain: 'my.subdomain.com/cas',\n },\n async authCallback({ accessToken, providers }) {\n const cas = purest({ provider: 'cas' });\n\n return cas\n .get('oidc/profile')\n .subdomain(providers.cas.subdomain)\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n // CAS attribute may be in body.attributes or \"FLAT\", depending on CAS config\n const username = body.attributes\n ? body.attributes.strapiusername || body.id || body.sub\n : body.strapiusername || body.id || body.sub;\n const email = body.attributes\n ? body.attributes.strapiemail || body.attributes.email\n : body.strapiemail || body.email;\n if (!username || !email) {\n strapi.log.warn(\n `CAS Response Body did not contain required attributes: ${JSON.stringify(body)}`\n );\n }\n return {\n username,\n email,\n };\n });\n },\n },\n\n patreon: {\n enabled: false,\n icon: '',\n grantConfig: {\n key: '',\n secret: '',\n callback: `${baseURL}/patreon/callback`,\n scope: ['identity', 'identity[email]'],\n },\n async authCallback({ accessToken }) {\n const patreon = purest({\n provider: 'patreon',\n config: {\n patreon: {\n default: {\n origin: 'https://www.patreon.com',\n path: 'api/oauth2/{path}',\n headers: {\n authorization: 'Bearer {auth}',\n },\n },\n },\n },\n });\n\n return patreon\n .get('v2/identity')\n .auth(accessToken)\n .qs(new URLSearchParams({ 'fields[user]': 'full_name,email' }).toString())\n .request()\n .then(({ body }) => {\n const patreonData = body.data.attributes;\n return {\n username: patreonData.full_name,\n email: patreonData.email,\n };\n });\n },\n },\n keycloak: {\n enabled: false,\n icon: '',\n grantConfig: {\n key: '',\n secret: '',\n subdomain: 'myKeycloakProvider.com/realms/myrealm',\n callback: `${baseURL}/keycloak/callback`,\n scope: ['openid', 'email', 'profile'],\n },\n async authCallback({ accessToken, providers }) {\n const keycloak = purest({ provider: 'keycloak' });\n\n return keycloak\n .subdomain(providers.keycloak.subdomain)\n .get('protocol/openid-connect/userinfo')\n .auth(accessToken)\n .request()\n .then(({ body }) => {\n return {\n username: body.preferred_username,\n email: body.email,\n };\n });\n },\n },\n});\n\nmodule.exports = () => {\n const purest = require('purest');\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n const baseURL = urljoin(strapi.config.server.url, apiPrefix, 'auth');\n\n const authProviders = initProviders({ baseURL, purest });\n\n /**\n * @public\n */\n return {\n getAll() {\n return authProviders;\n },\n get(name) {\n return authProviders[name];\n },\n add(name, config) {\n authProviders[name] = config;\n },\n remove(name) {\n delete authProviders[name];\n },\n\n /**\n * @internal\n */\n async run({ provider, accessToken, query, providers }) {\n const authProvider = authProviders[provider];\n\n assert(authProvider, 'Unknown auth provider');\n\n return authProvider.authCallback({ accessToken, query, providers, purest });\n },\n };\n};\n"],"names":["strict","assert","require$$0","jwt","require$$1","urljoin","require$$2","jwkToPem","require$$3","getCognitoPayload","idToken","jwksUrl","purest","header","kid","payload","decode","complete","Error","config","cognito","discovery","origin","path","pathname","provider","body","jwk","request","key","keys","find","jwkKid","pem","decodedToken","Promise","resolve","reject","verify","algorithms","err","initProviders","baseURL","email","enabled","icon","grantConfig","discord","secret","callbackUrl","scope","authCallback","accessToken","get","auth","then","username","discriminator","facebook","qs","fields","name","google","query","split","github","defaults","headers","userBody","login","emailBody","Array","isArray","primary","microsoft","userPrincipalName","twitter","providers","oauth","consumer_key","consumer_secret","access_secret","screen_name","include_email","instagram","vk","id","raw","user_id","v","response","last_name","first_name","twitch","default","Authorization","data","linkedin","linkedIn","localizedFirstName","elements","emailAddress","subdomain","callback","URL","jwksurl","id_token","tokenPayload","reddit","version","auth0","nickname","replace","cas","attributes","strapiusername","sub","strapiemail","strapi","log","warn","JSON","stringify","patreon","authorization","URLSearchParams","toString","patreonData","full_name","keycloak","preferred_username","providersRegistry","require$$4","apiPrefix","server","url","authProviders","getAll","add","remove","run","authProvider"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"role.js","sources":["../../../server/services/role.js"],"sourcesContent":["'use strict';\n\nconst _ = require('lodash');\nconst { NotFoundError } = require('@strapi/utils').errors;\nconst { getService } = require('../utils');\n\nmodule.exports = ({ strapi }) => ({\n async createRole(params) {\n if (!params.type) {\n params.type = _.snakeCase(_.deburr(_.toLower(params.name)));\n }\n\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .create({ data: _.omit(params, ['users', 'permissions']) });\n\n const createPromises = _.flatMap(params.permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n const actionID = `${typeName}.${controllerName}.${actionName}`;\n\n acc.push(\n strapi.db\n .query('plugin::users-permissions.permission')\n .create({ data: { action: actionID, role: role.id } })\n );\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n await Promise.all(createPromises);\n },\n\n async findOne(roleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n const allActions = getService('users-permissions').getActions();\n\n // Group by `type`.\n role.permissions.forEach((permission) => {\n const [type, controller, action] = permission.action.split('.');\n\n _.set(allActions, `${type}.controllers.${controller}.${action}`, {\n enabled: true,\n policy: '',\n });\n });\n\n return {\n ...role,\n permissions: allActions,\n };\n },\n\n async find() {\n const roles = await strapi.db\n .query('plugin::users-permissions.role')\n .findMany({ sort: ['name'] });\n\n for (const role of roles) {\n role.nb_users = await strapi.db\n .query('plugin::users-permissions.user')\n .count({ where: { role: { id: role.id } } });\n }\n\n return roles;\n },\n\n async updateRole(roleID, data) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n await strapi.db.query('plugin::users-permissions.role').update({\n where: { id: roleID },\n data: _.pick(data, ['name', 'description']),\n });\n\n const { permissions } = data;\n\n const newActions = _.flatMap(permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n acc.push(`${typeName}.${controllerName}.${actionName}`);\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n const oldActions = role.permissions.map(({ action }) => action);\n\n const toDelete = role.permissions.reduce((acc, permission) => {\n if (!newActions.includes(permission.action)) {\n acc.push(permission);\n }\n return acc;\n }, []);\n\n const toCreate = newActions\n .filter((action) => !oldActions.includes(action))\n .map((action) => ({ action, role: role.id }));\n\n await Promise.all(\n toDelete.map((permission) =>\n strapi.db\n .query('plugin::users-permissions.permission')\n .delete({ where: { id: permission.id } })\n )\n );\n\n await Promise.all(\n toCreate.map((permissionInfo) =>\n strapi.db.query('plugin::users-permissions.permission').create({ data: permissionInfo })\n )\n );\n },\n\n async deleteRole(roleID, publicRoleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['users', 'permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n // Move users to guest role.\n await Promise.all(\n role.users.map((user) => {\n return strapi.db.query('plugin::users-permissions.user').update({\n where: { id: user.id },\n data: { role: publicRoleID },\n });\n })\n );\n\n // Remove permissions related to this role.\n // TODO: use delete many\n await Promise.all(\n role.permissions.map((permission) => {\n return strapi.db.query('plugin::users-permissions.permission').delete({\n where: { id: permission.id },\n });\n })\n );\n\n // Delete the role.\n await strapi.db.query('plugin::users-permissions.role').delete({ where: { id: roleID } });\n },\n});\n"],"names":["_","require$$0","NotFoundError","require$$1","errors","getService","require$$2","role","strapi","createRole","params","type","snakeCase","deburr","toLower","name","db","query","create","data","omit","createPromises","flatMap","permissions","typeName","controllers","controller","controllerName","reduce","acc","action","actionName","enabled","actionID","push","id","Promise","all","findOne","roleID","where","populate","allActions","getActions","forEach","permission","split","set","policy","find","roles","findMany","sort","nb_users","count","updateRole","update","pick","newActions","oldActions","map","toDelete","includes","toCreate","filter","delete","permissionInfo","deleteRole","publicRoleID","users","user"],"mappings":"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"}
1
+ {"version":3,"file":"role.js","sources":["../../../server/services/role.js"],"sourcesContent":["'use strict';\n\nconst _ = require('lodash');\nconst { NotFoundError } = require('@strapi/utils').errors;\nconst { getService } = require('../utils');\n\nmodule.exports = ({ strapi }) => ({\n async createRole(params) {\n if (!params.type) {\n params.type = _.snakeCase(_.deburr(_.toLower(params.name)));\n }\n\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .create({ data: _.omit(params, ['users', 'permissions']) });\n\n const createPromises = _.flatMap(params.permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n const actionID = `${typeName}.${controllerName}.${actionName}`;\n\n acc.push(\n strapi.db\n .query('plugin::users-permissions.permission')\n .create({ data: { action: actionID, role: role.id } })\n );\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n await Promise.all(createPromises);\n },\n\n async findOne(roleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n const allActions = getService('users-permissions').getActions();\n\n // Group by `type`.\n role.permissions.forEach((permission) => {\n const [type, controller, action] = permission.action.split('.');\n\n _.set(allActions, `${type}.controllers.${controller}.${action}`, {\n enabled: true,\n policy: '',\n });\n });\n\n return {\n ...role,\n permissions: allActions,\n };\n },\n\n async find() {\n const roles = await strapi.db\n .query('plugin::users-permissions.role')\n .findMany({ sort: ['name'] });\n\n for (const role of roles) {\n role.nb_users = await strapi.db\n .query('plugin::users-permissions.user')\n .count({ where: { role: { id: role.id } } });\n }\n\n return roles;\n },\n\n async updateRole(roleID, data) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n await strapi.db.query('plugin::users-permissions.role').update({\n where: { id: roleID },\n data: _.pick(data, ['name', 'description']),\n });\n\n const { permissions } = data;\n\n const newActions = _.flatMap(permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n acc.push(`${typeName}.${controllerName}.${actionName}`);\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n const oldActions = role.permissions.map(({ action }) => action);\n\n const toDelete = role.permissions.reduce((acc, permission) => {\n if (!newActions.includes(permission.action)) {\n acc.push(permission);\n }\n return acc;\n }, []);\n\n const toCreate = newActions\n .filter((action) => !oldActions.includes(action))\n .map((action) => ({ action, role: role.id }));\n\n await Promise.all(\n toDelete.map((permission) =>\n strapi.db\n .query('plugin::users-permissions.permission')\n .delete({ where: { id: permission.id } })\n )\n );\n\n await Promise.all(\n toCreate.map((permissionInfo) =>\n strapi.db.query('plugin::users-permissions.permission').create({ data: permissionInfo })\n )\n );\n },\n\n async deleteRole(roleID, publicRoleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['users', 'permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n // Move users to guest role.\n await Promise.all(\n role.users.map((user) => {\n return strapi.db.query('plugin::users-permissions.user').update({\n where: { id: user.id },\n data: { role: publicRoleID },\n });\n })\n );\n\n // Remove permissions related to this role.\n // TODO: use delete many\n await Promise.all(\n role.permissions.map((permission) => {\n return strapi.db.query('plugin::users-permissions.permission').delete({\n where: { id: permission.id },\n });\n })\n );\n\n // Delete the role.\n await strapi.db.query('plugin::users-permissions.role').delete({ where: { id: roleID } });\n },\n});\n"],"names":["_","require$$0","NotFoundError","require$$1","errors","getService","require$$2","role","strapi","createRole","params","type","snakeCase","deburr","toLower","name","db","query","create","data","omit","createPromises","flatMap","permissions","typeName","controllers","controller","controllerName","reduce","acc","action","actionName","enabled","actionID","push","id","Promise","all","findOne","roleID","where","populate","allActions","getActions","forEach","permission","split","set","policy","find","roles","findMany","sort","nb_users","count","updateRole","update","pick","newActions","oldActions","map","toDelete","includes","toCreate","filter","delete","permissionInfo","deleteRole","publicRoleID","users","user"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"role.mjs","sources":["../../../server/services/role.js"],"sourcesContent":["'use strict';\n\nconst _ = require('lodash');\nconst { NotFoundError } = require('@strapi/utils').errors;\nconst { getService } = require('../utils');\n\nmodule.exports = ({ strapi }) => ({\n async createRole(params) {\n if (!params.type) {\n params.type = _.snakeCase(_.deburr(_.toLower(params.name)));\n }\n\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .create({ data: _.omit(params, ['users', 'permissions']) });\n\n const createPromises = _.flatMap(params.permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n const actionID = `${typeName}.${controllerName}.${actionName}`;\n\n acc.push(\n strapi.db\n .query('plugin::users-permissions.permission')\n .create({ data: { action: actionID, role: role.id } })\n );\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n await Promise.all(createPromises);\n },\n\n async findOne(roleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n const allActions = getService('users-permissions').getActions();\n\n // Group by `type`.\n role.permissions.forEach((permission) => {\n const [type, controller, action] = permission.action.split('.');\n\n _.set(allActions, `${type}.controllers.${controller}.${action}`, {\n enabled: true,\n policy: '',\n });\n });\n\n return {\n ...role,\n permissions: allActions,\n };\n },\n\n async find() {\n const roles = await strapi.db\n .query('plugin::users-permissions.role')\n .findMany({ sort: ['name'] });\n\n for (const role of roles) {\n role.nb_users = await strapi.db\n .query('plugin::users-permissions.user')\n .count({ where: { role: { id: role.id } } });\n }\n\n return roles;\n },\n\n async updateRole(roleID, data) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n await strapi.db.query('plugin::users-permissions.role').update({\n where: { id: roleID },\n data: _.pick(data, ['name', 'description']),\n });\n\n const { permissions } = data;\n\n const newActions = _.flatMap(permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n acc.push(`${typeName}.${controllerName}.${actionName}`);\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n const oldActions = role.permissions.map(({ action }) => action);\n\n const toDelete = role.permissions.reduce((acc, permission) => {\n if (!newActions.includes(permission.action)) {\n acc.push(permission);\n }\n return acc;\n }, []);\n\n const toCreate = newActions\n .filter((action) => !oldActions.includes(action))\n .map((action) => ({ action, role: role.id }));\n\n await Promise.all(\n toDelete.map((permission) =>\n strapi.db\n .query('plugin::users-permissions.permission')\n .delete({ where: { id: permission.id } })\n )\n );\n\n await Promise.all(\n toCreate.map((permissionInfo) =>\n strapi.db.query('plugin::users-permissions.permission').create({ data: permissionInfo })\n )\n );\n },\n\n async deleteRole(roleID, publicRoleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['users', 'permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n // Move users to guest role.\n await Promise.all(\n role.users.map((user) => {\n return strapi.db.query('plugin::users-permissions.user').update({\n where: { id: user.id },\n data: { role: publicRoleID },\n });\n })\n );\n\n // Remove permissions related to this role.\n // TODO: use delete many\n await Promise.all(\n role.permissions.map((permission) => {\n return strapi.db.query('plugin::users-permissions.permission').delete({\n where: { id: permission.id },\n });\n })\n );\n\n // Delete the role.\n await strapi.db.query('plugin::users-permissions.role').delete({ where: { id: roleID } });\n },\n});\n"],"names":["_","require$$0","NotFoundError","require$$1","errors","getService","require$$2","role","strapi","createRole","params","type","snakeCase","deburr","toLower","name","db","query","create","data","omit","createPromises","flatMap","permissions","typeName","controllers","controller","controllerName","reduce","acc","action","actionName","enabled","actionID","push","id","Promise","all","findOne","roleID","where","populate","allActions","getActions","forEach","permission","split","set","policy","find","roles","findMany","sort","nb_users","count","updateRole","update","pick","newActions","oldActions","map","toDelete","includes","toCreate","filter","delete","permissionInfo","deleteRole","publicRoleID","users","user"],"mappings":"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"}
1
+ {"version":3,"file":"role.mjs","sources":["../../../server/services/role.js"],"sourcesContent":["'use strict';\n\nconst _ = require('lodash');\nconst { NotFoundError } = require('@strapi/utils').errors;\nconst { getService } = require('../utils');\n\nmodule.exports = ({ strapi }) => ({\n async createRole(params) {\n if (!params.type) {\n params.type = _.snakeCase(_.deburr(_.toLower(params.name)));\n }\n\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .create({ data: _.omit(params, ['users', 'permissions']) });\n\n const createPromises = _.flatMap(params.permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n const actionID = `${typeName}.${controllerName}.${actionName}`;\n\n acc.push(\n strapi.db\n .query('plugin::users-permissions.permission')\n .create({ data: { action: actionID, role: role.id } })\n );\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n await Promise.all(createPromises);\n },\n\n async findOne(roleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n const allActions = getService('users-permissions').getActions();\n\n // Group by `type`.\n role.permissions.forEach((permission) => {\n const [type, controller, action] = permission.action.split('.');\n\n _.set(allActions, `${type}.controllers.${controller}.${action}`, {\n enabled: true,\n policy: '',\n });\n });\n\n return {\n ...role,\n permissions: allActions,\n };\n },\n\n async find() {\n const roles = await strapi.db\n .query('plugin::users-permissions.role')\n .findMany({ sort: ['name'] });\n\n for (const role of roles) {\n role.nb_users = await strapi.db\n .query('plugin::users-permissions.user')\n .count({ where: { role: { id: role.id } } });\n }\n\n return roles;\n },\n\n async updateRole(roleID, data) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n await strapi.db.query('plugin::users-permissions.role').update({\n where: { id: roleID },\n data: _.pick(data, ['name', 'description']),\n });\n\n const { permissions } = data;\n\n const newActions = _.flatMap(permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n acc.push(`${typeName}.${controllerName}.${actionName}`);\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n const oldActions = role.permissions.map(({ action }) => action);\n\n const toDelete = role.permissions.reduce((acc, permission) => {\n if (!newActions.includes(permission.action)) {\n acc.push(permission);\n }\n return acc;\n }, []);\n\n const toCreate = newActions\n .filter((action) => !oldActions.includes(action))\n .map((action) => ({ action, role: role.id }));\n\n await Promise.all(\n toDelete.map((permission) =>\n strapi.db\n .query('plugin::users-permissions.permission')\n .delete({ where: { id: permission.id } })\n )\n );\n\n await Promise.all(\n toCreate.map((permissionInfo) =>\n strapi.db.query('plugin::users-permissions.permission').create({ data: permissionInfo })\n )\n );\n },\n\n async deleteRole(roleID, publicRoleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['users', 'permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n // Move users to guest role.\n await Promise.all(\n role.users.map((user) => {\n return strapi.db.query('plugin::users-permissions.user').update({\n where: { id: user.id },\n data: { role: publicRoleID },\n });\n })\n );\n\n // Remove permissions related to this role.\n // TODO: use delete many\n await Promise.all(\n role.permissions.map((permission) => {\n return strapi.db.query('plugin::users-permissions.permission').delete({\n where: { id: permission.id },\n });\n })\n );\n\n // Delete the role.\n await strapi.db.query('plugin::users-permissions.role').delete({ where: { id: roleID } });\n },\n});\n"],"names":["_","require$$0","NotFoundError","require$$1","errors","getService","require$$2","role","strapi","createRole","params","type","snakeCase","deburr","toLower","name","db","query","create","data","omit","createPromises","flatMap","permissions","typeName","controllers","controller","controllerName","reduce","acc","action","actionName","enabled","actionID","push","id","Promise","all","findOne","roleID","where","populate","allActions","getActions","forEach","permission","split","set","policy","find","roles","findMany","sort","nb_users","count","updateRole","update","pick","newActions","oldActions","map","toDelete","includes","toCreate","filter","delete","permissionInfo","deleteRole","publicRoleID","users","user"],"mappings":"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"}
@@ -23,13 +23,17 @@ function requireUser() {
23
23
  const { toNumber, getOr } = require$$0$1;
24
24
  const { getService } = index.__require();
25
25
  const USER_MODEL_UID = 'plugin::users-permissions.user';
26
- user = ({ strapi })=>({
26
+ const getSessionManager = ()=>{
27
+ const manager = strapi.sessionManager;
28
+ return manager ?? null;
29
+ };
30
+ user = ({ strapi: strapi1 })=>({
27
31
  /**
28
32
  * Promise to count users
29
33
  *
30
34
  * @return {Promise}
31
35
  */ count (params) {
32
- return strapi.db.query(USER_MODEL_UID).count({
36
+ return strapi1.db.query(USER_MODEL_UID).count({
33
37
  where: params
34
38
  });
35
39
  },
@@ -41,7 +45,7 @@ function requireUser() {
41
45
  * @param {object} values - The object containing the fields to be hashed.
42
46
  * @return {object} The values object with hashed password fields if they were present.
43
47
  */ async ensureHashedPasswords (values) {
44
- const attributes = strapi.getModel(USER_MODEL_UID).attributes;
48
+ const attributes = strapi1.getModel(USER_MODEL_UID).attributes;
45
49
  for(const key in values){
46
50
  if (attributes[key] && attributes[key].type === 'password') {
47
51
  // Check if a custom encryption.rounds has been set on the password attribute
@@ -55,7 +59,7 @@ function requireUser() {
55
59
  * Promise to add a/an user.
56
60
  * @return {Promise}
57
61
  */ async add (values) {
58
- return strapi.db.query(USER_MODEL_UID).create({
62
+ return strapi1.db.query(USER_MODEL_UID).create({
59
63
  data: await this.ensureHashedPasswords(values),
60
64
  populate: [
61
65
  'role'
@@ -68,7 +72,7 @@ function requireUser() {
68
72
  * @param {object} params
69
73
  * @return {Promise}
70
74
  */ async edit (userId, params = {}) {
71
- return strapi.db.query(USER_MODEL_UID).update({
75
+ return strapi1.db.query(USER_MODEL_UID).update({
72
76
  where: {
73
77
  id: userId
74
78
  },
@@ -82,8 +86,8 @@ function requireUser() {
82
86
  * Promise to fetch a/an user.
83
87
  * @return {Promise}
84
88
  */ fetch (id, params) {
85
- const query = strapi.get('query-params').transform(USER_MODEL_UID, params ?? {});
86
- return strapi.db.query(USER_MODEL_UID).findOne({
89
+ const query = strapi1.get('query-params').transform(USER_MODEL_UID, params ?? {});
90
+ return strapi1.db.query(USER_MODEL_UID).findOne({
87
91
  ...query,
88
92
  where: {
89
93
  $and: [
@@ -99,7 +103,7 @@ function requireUser() {
99
103
  * Promise to fetch authenticated user.
100
104
  * @return {Promise}
101
105
  */ fetchAuthenticatedUser (id) {
102
- return strapi.db.query(USER_MODEL_UID).findOne({
106
+ return strapi1.db.query(USER_MODEL_UID).findOne({
103
107
  where: {
104
108
  id
105
109
  },
@@ -112,14 +116,19 @@ function requireUser() {
112
116
  * Promise to fetch all users.
113
117
  * @return {Promise}
114
118
  */ fetchAll (params) {
115
- const query = strapi.get('query-params').transform(USER_MODEL_UID, params ?? {});
116
- return strapi.db.query(USER_MODEL_UID).findMany(query);
119
+ const query = strapi1.get('query-params').transform(USER_MODEL_UID, params ?? {});
120
+ return strapi1.db.query(USER_MODEL_UID).findMany(query);
117
121
  },
118
122
  /**
119
123
  * Promise to remove a/an user.
120
124
  * @return {Promise}
121
125
  */ async remove (params) {
122
- return strapi.db.query(USER_MODEL_UID).delete({
126
+ // Invalidate sessions for all affected users
127
+ const sessionManager = getSessionManager();
128
+ if (sessionManager && sessionManager.hasOrigin('users-permissions') && params.id) {
129
+ await sessionManager('users-permissions').invalidateRefreshToken(String(params.id));
130
+ }
131
+ return strapi1.db.query(USER_MODEL_UID).delete({
123
132
  where: params
124
133
  });
125
134
  },
@@ -128,29 +137,29 @@ function requireUser() {
128
137
  },
129
138
  async sendConfirmationEmail (user) {
130
139
  const userPermissionService = getService('users-permissions');
131
- const pluginStore = await strapi.store({
140
+ const pluginStore = await strapi1.store({
132
141
  type: 'plugin',
133
142
  name: 'users-permissions'
134
143
  });
135
- const userSchema = strapi.getModel(USER_MODEL_UID);
144
+ const userSchema = strapi1.getModel(USER_MODEL_UID);
136
145
  const settings = await pluginStore.get({
137
146
  key: 'email'
138
147
  }).then((storeEmail)=>storeEmail.email_confirmation.options);
139
148
  // Sanitize the template's user information
140
149
  const sanitizedUserInfo = await sanitize.sanitizers.defaultSanitizeOutput({
141
150
  schema: userSchema,
142
- getModel: strapi.getModel.bind(strapi)
151
+ getModel: strapi1.getModel.bind(strapi1)
143
152
  }, user);
144
153
  const confirmationToken = crypto.randomBytes(20).toString('hex');
145
154
  await this.edit(user.id, {
146
155
  confirmationToken
147
156
  });
148
- const apiPrefix = strapi.config.get('api.rest.prefix');
157
+ const apiPrefix = strapi1.config.get('api.rest.prefix');
149
158
  try {
150
159
  settings.message = await userPermissionService.template(settings.message, {
151
- URL: urlJoin(strapi.config.get('server.absoluteUrl'), apiPrefix, '/auth/email-confirmation'),
152
- SERVER_URL: strapi.config.get('server.absoluteUrl'),
153
- ADMIN_URL: strapi.config.get('admin.absoluteUrl'),
160
+ URL: urlJoin(strapi1.config.get('server.absoluteUrl'), apiPrefix, '/auth/email-confirmation'),
161
+ SERVER_URL: strapi1.config.get('server.absoluteUrl'),
162
+ ADMIN_URL: strapi1.config.get('admin.absoluteUrl'),
154
163
  USER: sanitizedUserInfo,
155
164
  CODE: confirmationToken
156
165
  });
@@ -158,11 +167,11 @@ function requireUser() {
158
167
  USER: sanitizedUserInfo
159
168
  });
160
169
  } catch {
161
- strapi.log.error('[plugin::users-permissions.sendConfirmationEmail]: Failed to generate a template for "user confirmation email". Please make sure your email template is valid and does not contain invalid characters or patterns');
170
+ strapi1.log.error('[plugin::users-permissions.sendConfirmationEmail]: Failed to generate a template for "user confirmation email". Please make sure your email template is valid and does not contain invalid characters or patterns');
162
171
  return;
163
172
  }
164
173
  // Send an email to the user.
165
- await strapi.plugin('email').service('email').send({
174
+ await strapi1.plugin('email').service('email').send({
166
175
  to: user.email,
167
176
  from: settings.from.email && settings.from.name ? `${settings.from.name} <${settings.from.email}>` : undefined,
168
177
  replyTo: settings.response_email,