@strapi/plugin-users-permissions 5.48.1 → 5.50.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 (159) hide show
  1. package/.eslintrc.cjs +1 -0
  2. package/admin/src/pages/AdvancedSettings/index.jsx +1 -1
  3. package/admin/src/pages/Roles/pages/ListPage/index.jsx +1 -1
  4. package/admin/src/translations/ja.json +46 -7
  5. package/dist/admin/components/BoundRoute/index.js +12 -6
  6. package/dist/admin/components/BoundRoute/index.js.map +1 -1
  7. package/dist/admin/components/FormModal/Input/index.js +25 -21
  8. package/dist/admin/components/FormModal/Input/index.js.map +1 -1
  9. package/dist/admin/components/FormModal/index.js +14 -10
  10. package/dist/admin/components/FormModal/index.js.map +1 -1
  11. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js +8 -3
  12. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js.map +1 -1
  13. package/dist/admin/components/Permissions/PermissionRow/index.js +9 -4
  14. package/dist/admin/components/Permissions/PermissionRow/index.js.map +1 -1
  15. package/dist/admin/components/Policies/index.js +9 -3
  16. package/dist/admin/components/Policies/index.js.map +1 -1
  17. package/dist/admin/components/UsersPermissions/index.js +6 -2
  18. package/dist/admin/components/UsersPermissions/index.js.map +1 -1
  19. package/dist/admin/components/UsersPermissions/reducer.js +10 -4
  20. package/dist/admin/components/UsersPermissions/reducer.js.map +1 -1
  21. package/dist/admin/contexts/UsersPermissionsContext/index.js +6 -2
  22. package/dist/admin/contexts/UsersPermissionsContext/index.js.map +1 -1
  23. package/dist/admin/pages/AdvancedSettings/index.js +1 -1
  24. package/dist/admin/pages/AdvancedSettings/index.js.map +1 -1
  25. package/dist/admin/pages/AdvancedSettings/index.mjs +1 -1
  26. package/dist/admin/pages/AdvancedSettings/index.mjs.map +1 -1
  27. package/dist/admin/pages/AdvancedSettings/utils/schema.js +3 -2
  28. package/dist/admin/pages/AdvancedSettings/utils/schema.js.map +1 -1
  29. package/dist/admin/pages/EmailTemplates/components/EmailForm.js +17 -13
  30. package/dist/admin/pages/EmailTemplates/components/EmailForm.js.map +1 -1
  31. package/dist/admin/pages/EmailTemplates/components/EmailTable.js +6 -2
  32. package/dist/admin/pages/EmailTemplates/components/EmailTable.js.map +1 -1
  33. package/dist/admin/pages/EmailTemplates/index.js +3 -2
  34. package/dist/admin/pages/EmailTemplates/index.js.map +1 -1
  35. package/dist/admin/pages/EmailTemplates/utils/schema.js +3 -2
  36. package/dist/admin/pages/EmailTemplates/utils/schema.js.map +1 -1
  37. package/dist/admin/pages/Providers/index.js +7 -3
  38. package/dist/admin/pages/Providers/index.js.map +1 -1
  39. package/dist/admin/pages/Providers/utils/forms.js +3 -2
  40. package/dist/admin/pages/Providers/utils/forms.js.map +1 -1
  41. package/dist/admin/pages/Roles/constants.js +3 -2
  42. package/dist/admin/pages/Roles/constants.js.map +1 -1
  43. package/dist/admin/pages/Roles/pages/CreatePage.js +3 -2
  44. package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -1
  45. package/dist/admin/pages/Roles/pages/EditPage.js +3 -2
  46. package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -1
  47. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js +9 -5
  48. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js.map +1 -1
  49. package/dist/admin/pages/Roles/pages/ListPage/index.js +1 -1
  50. package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -1
  51. package/dist/admin/pages/Roles/pages/ListPage/index.mjs +1 -1
  52. package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -1
  53. package/dist/admin/translations/ja.json.js +46 -7
  54. package/dist/admin/translations/ja.json.js.map +1 -1
  55. package/dist/admin/translations/ja.json.mjs +46 -7
  56. package/dist/admin/translations/ja.json.mjs.map +1 -1
  57. package/dist/admin/utils/cleanPermissions.js +6 -2
  58. package/dist/admin/utils/cleanPermissions.js.map +1 -1
  59. package/dist/admin/utils/formatPluginName.js +5 -1
  60. package/dist/admin/utils/formatPluginName.js.map +1 -1
  61. package/dist/server/bootstrap/index.js +7 -2
  62. package/dist/server/bootstrap/index.js.map +1 -1
  63. package/dist/server/controllers/auth.js +144 -117
  64. package/dist/server/controllers/auth.js.map +1 -1
  65. package/dist/server/controllers/auth.mjs +132 -113
  66. package/dist/server/controllers/auth.mjs.map +1 -1
  67. package/dist/server/controllers/content-manager-user.js +8 -3
  68. package/dist/server/controllers/content-manager-user.js.map +1 -1
  69. package/dist/server/controllers/permissions.js +5 -1
  70. package/dist/server/controllers/permissions.js.map +1 -1
  71. package/dist/server/controllers/role.js +7 -2
  72. package/dist/server/controllers/role.js.map +1 -1
  73. package/dist/server/controllers/settings.js +7 -2
  74. package/dist/server/controllers/settings.js.map +1 -1
  75. package/dist/server/controllers/user.js +7 -2
  76. package/dist/server/controllers/user.js.map +1 -1
  77. package/dist/server/controllers/validation/auth.js +5 -1
  78. package/dist/server/controllers/validation/auth.js.map +1 -1
  79. package/dist/server/controllers/validation/email-template.js +7 -2
  80. package/dist/server/controllers/validation/email-template.js.map +1 -1
  81. package/dist/server/controllers/validation/user.js +21 -10
  82. package/dist/server/controllers/validation/user.js.map +1 -1
  83. package/dist/server/controllers/validation/user.mjs +16 -9
  84. package/dist/server/controllers/validation/user.mjs.map +1 -1
  85. package/dist/server/graphql/mutations/auth/change-password.js +5 -1
  86. package/dist/server/graphql/mutations/auth/change-password.js.map +1 -1
  87. package/dist/server/graphql/mutations/auth/email-confirmation.js +5 -1
  88. package/dist/server/graphql/mutations/auth/email-confirmation.js.map +1 -1
  89. package/dist/server/graphql/mutations/auth/forgot-password.js +5 -1
  90. package/dist/server/graphql/mutations/auth/forgot-password.js.map +1 -1
  91. package/dist/server/graphql/mutations/auth/login.js +5 -1
  92. package/dist/server/graphql/mutations/auth/login.js.map +1 -1
  93. package/dist/server/graphql/mutations/auth/register.js +5 -1
  94. package/dist/server/graphql/mutations/auth/register.js.map +1 -1
  95. package/dist/server/graphql/mutations/auth/reset-password.js +5 -1
  96. package/dist/server/graphql/mutations/auth/reset-password.js.map +1 -1
  97. package/dist/server/graphql/mutations/crud/role/create-role.js +5 -1
  98. package/dist/server/graphql/mutations/crud/role/create-role.js.map +1 -1
  99. package/dist/server/graphql/mutations/crud/user/create-user.js +5 -1
  100. package/dist/server/graphql/mutations/crud/user/create-user.js.map +1 -1
  101. package/dist/server/graphql/mutations/crud/user/update-user.js +5 -1
  102. package/dist/server/graphql/mutations/crud/user/update-user.js.map +1 -1
  103. package/dist/server/graphql/utils.js +5 -1
  104. package/dist/server/graphql/utils.js.map +1 -1
  105. package/dist/server/middlewares/rateLimit.js +11 -4
  106. package/dist/server/middlewares/rateLimit.js.map +1 -1
  107. package/dist/server/register.js +7 -2
  108. package/dist/server/register.js.map +1 -1
  109. package/dist/server/routes/content-api/auth.js +16 -0
  110. package/dist/server/routes/content-api/auth.js.map +1 -1
  111. package/dist/server/routes/content-api/auth.mjs +16 -0
  112. package/dist/server/routes/content-api/auth.mjs.map +1 -1
  113. package/dist/server/routes/content-api/index.js +5 -1
  114. package/dist/server/routes/content-api/index.js.map +1 -1
  115. package/dist/server/routes/content-api/user.js +5 -1
  116. package/dist/server/routes/content-api/user.js.map +1 -1
  117. package/dist/server/routes/content-api/validation.js +36 -4
  118. package/dist/server/routes/content-api/validation.js.map +1 -1
  119. package/dist/server/routes/content-api/validation.mjs +29 -2
  120. package/dist/server/routes/content-api/validation.mjs.map +1 -1
  121. package/dist/server/services/jwt.js +15 -8
  122. package/dist/server/services/jwt.js.map +1 -1
  123. package/dist/server/services/jwt.mjs +8 -6
  124. package/dist/server/services/jwt.mjs.map +1 -1
  125. package/dist/server/services/providers-registry.js +13 -5
  126. package/dist/server/services/providers-registry.js.map +1 -1
  127. package/dist/server/services/providers.js +7 -2
  128. package/dist/server/services/providers.js.map +1 -1
  129. package/dist/server/services/role.js +7 -2
  130. package/dist/server/services/role.js.map +1 -1
  131. package/dist/server/services/user.js +13 -5
  132. package/dist/server/services/user.js.map +1 -1
  133. package/dist/server/services/users-permissions.js +19 -4
  134. package/dist/server/services/users-permissions.js.map +1 -1
  135. package/dist/server/services/users-permissions.mjs +8 -0
  136. package/dist/server/services/users-permissions.mjs.map +1 -1
  137. package/dist/server/strategies/users-permissions.js +15 -3
  138. package/dist/server/strategies/users-permissions.js.map +1 -1
  139. package/dist/server/strategies/users-permissions.mjs +8 -1
  140. package/dist/server/strategies/users-permissions.mjs.map +1 -1
  141. package/dist/server/utils/index.js +5 -1
  142. package/dist/server/utils/index.js.map +1 -1
  143. package/dist/server/utils/refresh-cookie-options.js +27 -0
  144. package/dist/server/utils/refresh-cookie-options.js.map +1 -0
  145. package/dist/server/utils/refresh-cookie-options.mjs +25 -0
  146. package/dist/server/utils/refresh-cookie-options.mjs.map +1 -0
  147. package/dist/server/utils/sanitize/sanitizers.js +7 -2
  148. package/dist/server/utils/sanitize/sanitizers.js.map +1 -1
  149. package/lint-staged.config.mjs +1 -0
  150. package/package.json +5 -5
  151. package/rollup.config.mjs +3 -3
  152. package/server/controllers/auth.js +162 -141
  153. package/server/controllers/validation/user.js +22 -9
  154. package/server/routes/content-api/auth.js +12 -0
  155. package/server/routes/content-api/validation.js +32 -2
  156. package/server/services/jwt.js +4 -3
  157. package/server/services/users-permissions.js +2 -0
  158. package/server/strategies/users-permissions.js +6 -1
  159. package/server/utils/refresh-cookie-options.js +20 -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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"}
@@ -4,6 +4,11 @@ var require$$0 = require('lodash');
4
4
  var require$$2 = require('url-join');
5
5
  var index = require('../utils/index.js');
6
6
 
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var require$$0__default = /*#__PURE__*/_interopDefault(require$$0);
10
+ var require$$2__default = /*#__PURE__*/_interopDefault(require$$2);
11
+
7
12
  var providers;
8
13
  var hasRequiredProviders;
9
14
  function requireProviders() {
@@ -12,8 +17,8 @@ function requireProviders() {
12
17
  /**
13
18
  * Module dependencies
14
19
  */ // Public node modules.
15
- const _ = require$$0;
16
- const urlJoin = require$$2;
20
+ const _ = require$$0__default.default;
21
+ const urlJoin = require$$2__default.default;
17
22
  const { getService, findValidUsername } = index.__require();
18
23
  providers = ({ strapi })=>{
19
24
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sources":["../../../server/services/providers.js"],"sourcesContent":["'use strict';\n\n/**\n * Module dependencies\n */\n\n// Public node modules.\nconst _ = require('lodash');\nconst urlJoin = require('url-join');\n\nconst { getService, findValidUsername } = require('../utils');\n\nmodule.exports = ({ strapi }) => {\n /**\n * Helper to get profiles\n *\n * @param {String} provider\n */\n\n const getProfile = async (provider, query) => {\n const accessToken = query.access_token || query.code || query.oauth_token;\n\n const providers = await strapi\n .store({ type: 'plugin', name: 'users-permissions', key: 'grant' })\n .get();\n\n return getService('providers-registry').run({\n provider,\n query,\n accessToken,\n providers,\n });\n };\n\n /**\n * Connect thanks to a third-party provider.\n *\n *\n * @param {String} provider\n * @param {String} accessToken\n *\n * @return {*}\n */\n\n const connect = async (provider, query) => {\n const accessToken = query.access_token || query.code || query.oauth_token;\n\n if (!accessToken) {\n throw new Error('No access_token.');\n }\n\n // Get the profile.\n const profile = await getProfile(provider, query);\n\n const email = _.toLower(profile.email);\n\n // We need at least the mail.\n if (!email) {\n throw new Error('Email was not available.');\n }\n\n const users = await strapi.db.query('plugin::users-permissions.user').findMany({\n where: { email },\n });\n\n const advancedSettings = await strapi\n .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' })\n .get();\n\n const user = _.find(users, { provider });\n\n if (_.isEmpty(user) && !advancedSettings.allow_register) {\n throw new Error('Register action is actually not available.');\n }\n\n if (!_.isEmpty(user)) {\n return user;\n }\n\n if (users.length && advancedSettings.unique_email) {\n throw new Error('Email is already taken.');\n }\n\n // Retrieve default role.\n const defaultRole = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { type: advancedSettings.default_role } });\n\n // Username: prefer profile, else email prefix; findValidUsername ensures valid + unique\n const base = (profile.username && profile.username.trim()) || email.split('@')[0];\n const username = await findValidUsername(base);\n\n // Create the new user.\n const newUser = {\n ...profile,\n username, // use the generated or provided username\n email, // overwrite with lowercased email\n provider,\n role: defaultRole.id,\n confirmed: true,\n };\n\n const createdUser = await strapi.db\n .query('plugin::users-permissions.user')\n .create({ data: newUser });\n\n return createdUser;\n };\n\n const buildRedirectUri = (provider = '') => {\n const apiPrefix = strapi.config.get('api.rest.prefix');\n return urlJoin(\n strapi.config.get('server.absoluteUrl'),\n apiPrefix,\n 'connect',\n provider,\n 'callback'\n );\n };\n\n return {\n connect,\n buildRedirectUri,\n };\n};\n"],"names":["_","require$$0","urlJoin","require$$1","getService","findValidUsername","require$$2","providers","strapi","getProfile","provider","query","accessToken","access_token","code","oauth_token","store","type","name","key","get","run","connect","Error","profile","email","toLower","users","db","findMany","where","advancedSettings","user","find","isEmpty","allow_register","length","unique_email","defaultRole","findOne","default_role","base","username","trim","split","newUser","role","id","confirmed","createdUser","create","data","buildRedirectUri","apiPrefix","config"],"mappings":"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"}
1
+ {"version":3,"file":"providers.js","sources":["../../../server/services/providers.js"],"sourcesContent":["'use strict';\n\n/**\n * Module dependencies\n */\n\n// Public node modules.\nconst _ = require('lodash');\nconst urlJoin = require('url-join');\n\nconst { getService, findValidUsername } = require('../utils');\n\nmodule.exports = ({ strapi }) => {\n /**\n * Helper to get profiles\n *\n * @param {String} provider\n */\n\n const getProfile = async (provider, query) => {\n const accessToken = query.access_token || query.code || query.oauth_token;\n\n const providers = await strapi\n .store({ type: 'plugin', name: 'users-permissions', key: 'grant' })\n .get();\n\n return getService('providers-registry').run({\n provider,\n query,\n accessToken,\n providers,\n });\n };\n\n /**\n * Connect thanks to a third-party provider.\n *\n *\n * @param {String} provider\n * @param {String} accessToken\n *\n * @return {*}\n */\n\n const connect = async (provider, query) => {\n const accessToken = query.access_token || query.code || query.oauth_token;\n\n if (!accessToken) {\n throw new Error('No access_token.');\n }\n\n // Get the profile.\n const profile = await getProfile(provider, query);\n\n const email = _.toLower(profile.email);\n\n // We need at least the mail.\n if (!email) {\n throw new Error('Email was not available.');\n }\n\n const users = await strapi.db.query('plugin::users-permissions.user').findMany({\n where: { email },\n });\n\n const advancedSettings = await strapi\n .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' })\n .get();\n\n const user = _.find(users, { provider });\n\n if (_.isEmpty(user) && !advancedSettings.allow_register) {\n throw new Error('Register action is actually not available.');\n }\n\n if (!_.isEmpty(user)) {\n return user;\n }\n\n if (users.length && advancedSettings.unique_email) {\n throw new Error('Email is already taken.');\n }\n\n // Retrieve default role.\n const defaultRole = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { type: advancedSettings.default_role } });\n\n // Username: prefer profile, else email prefix; findValidUsername ensures valid + unique\n const base = (profile.username && profile.username.trim()) || email.split('@')[0];\n const username = await findValidUsername(base);\n\n // Create the new user.\n const newUser = {\n ...profile,\n username, // use the generated or provided username\n email, // overwrite with lowercased email\n provider,\n role: defaultRole.id,\n confirmed: true,\n };\n\n const createdUser = await strapi.db\n .query('plugin::users-permissions.user')\n .create({ data: newUser });\n\n return createdUser;\n };\n\n const buildRedirectUri = (provider = '') => {\n const apiPrefix = strapi.config.get('api.rest.prefix');\n return urlJoin(\n strapi.config.get('server.absoluteUrl'),\n apiPrefix,\n 'connect',\n provider,\n 'callback'\n );\n };\n\n return {\n connect,\n buildRedirectUri,\n };\n};\n"],"names":["_","require$$0","urlJoin","require$$1","getService","findValidUsername","require$$2","providers","strapi","getProfile","provider","query","accessToken","access_token","code","oauth_token","store","type","name","key","get","run","connect","Error","profile","email","toLower","users","db","findMany","where","advancedSettings","user","find","isEmpty","allow_register","length","unique_email","defaultRole","findOne","default_role","base","username","trim","split","newUser","role","id","confirmed","createdUser","create","data","buildRedirectUri","apiPrefix","config"],"mappings":"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"}
@@ -4,13 +4,18 @@ var require$$0 = require('lodash');
4
4
  var require$$1 = require('@strapi/utils');
5
5
  var index = require('../utils/index.js');
6
6
 
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var require$$0__default = /*#__PURE__*/_interopDefault(require$$0);
10
+ var require$$1__default = /*#__PURE__*/_interopDefault(require$$1);
11
+
7
12
  var role;
8
13
  var hasRequiredRole;
9
14
  function requireRole() {
10
15
  if (hasRequiredRole) return role;
11
16
  hasRequiredRole = 1;
12
- const _ = require$$0;
13
- const { NotFoundError } = require$$1.errors;
17
+ const _ = require$$0__default.default;
18
+ const { NotFoundError } = require$$1__default.default.errors;
14
19
  const { getService } = index.__require();
15
20
  role = ({ strapi })=>({
16
21
  async createRole (params) {
@@ -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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"}
@@ -7,6 +7,14 @@ var require$$1 = require('@strapi/utils');
7
7
  var require$$0 = require('lodash/fp');
8
8
  var index = require('../utils/index.js');
9
9
 
10
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
+
12
+ var require$$0__default$1 = /*#__PURE__*/_interopDefault(require$$0$1);
13
+ var require$$1__default$1 = /*#__PURE__*/_interopDefault(require$$1$1);
14
+ var require$$2__default = /*#__PURE__*/_interopDefault(require$$2);
15
+ var require$$1__default = /*#__PURE__*/_interopDefault(require$$1);
16
+ var require$$0__default = /*#__PURE__*/_interopDefault(require$$0);
17
+
10
18
  var user;
11
19
  var hasRequiredUser;
12
20
  function requireUser() {
@@ -16,11 +24,11 @@ function requireUser() {
16
24
  * User.js service
17
25
  *
18
26
  * @description: A set of functions similar to controller's actions to avoid code duplication.
19
- */ const crypto = require$$0$1;
20
- const bcrypt = require$$1$1;
21
- const urlJoin = require$$2;
22
- const { sanitize } = require$$1;
23
- const { toNumber, getOr } = require$$0;
27
+ */ const crypto = require$$0__default$1.default;
28
+ const bcrypt = require$$1__default$1.default;
29
+ const urlJoin = require$$2__default.default;
30
+ const { sanitize } = require$$1__default.default;
31
+ const { toNumber, getOr } = require$$0__default.default;
24
32
  const { getService } = index.__require();
25
33
  const USER_MODEL_UID = 'plugin::users-permissions.user';
26
34
  const getSessionManager = ()=>{
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sources":["../../../server/services/user.js"],"sourcesContent":["'use strict';\n\n/**\n * User.js service\n *\n * @description: A set of functions similar to controller's actions to avoid code duplication.\n */\n\nconst crypto = require('crypto');\nconst bcrypt = require('bcryptjs');\nconst urlJoin = require('url-join');\n\nconst { sanitize } = require('@strapi/utils');\nconst { toNumber, getOr } = require('lodash/fp');\nconst { getService } = require('../utils');\n\nconst USER_MODEL_UID = 'plugin::users-permissions.user';\n\nconst getSessionManager = () => {\n const manager = strapi.sessionManager;\n return manager ?? null;\n};\n\nmodule.exports = ({ strapi }) => ({\n /**\n * Promise to count users\n *\n * @return {Promise}\n */\n\n count(params) {\n return strapi.db.query(USER_MODEL_UID).count({ where: params });\n },\n\n /**\n * Hashes password fields in the provided values object if they are present.\n * It checks each key in the values object against the model's attributes and\n * hashes it if the attribute type is 'password',\n *\n * @param {object} values - The object containing the fields to be hashed.\n * @return {object} The values object with hashed password fields if they were present.\n */\n async ensureHashedPasswords(values) {\n const attributes = strapi.getModel(USER_MODEL_UID).attributes;\n\n for (const key in values) {\n if (attributes[key] && attributes[key].type === 'password') {\n // Check if a custom encryption.rounds has been set on the password attribute\n const rounds = toNumber(getOr(10, 'encryption.rounds', attributes[key]));\n values[key] = await bcrypt.hash(values[key], rounds);\n }\n }\n\n return values;\n },\n\n /**\n * Promise to add a/an user.\n * @return {Promise}\n */\n async add(values) {\n // Use the Document Service so relation inputs accept both the internal\n // numeric id (legacy) and the documentId (v5 default) syntax, consistent\n // with every other content-type endpoint. The Document Service hashes\n // `password` attributes itself, so we must not pre-hash here.\n return strapi.documents(USER_MODEL_UID).create({\n data: values,\n populate: ['role'],\n });\n },\n\n /**\n * Promise to edit a/an user.\n * @param {string} userId\n * @param {object} params\n * @return {Promise}\n */\n async edit(userId, params = {}) {\n // The user is addressed by its numeric id (e.g. the `/users/:id` route),\n // but the Document Service updates by documentId. Resolve it first so the\n // relation inputs are processed by the Document Service, which accepts both\n // numeric ids (legacy) and documentIds (v5 default). The Document Service\n // hashes `password` attributes itself, so we must not pre-hash here.\n const entry = await strapi.db\n .query(USER_MODEL_UID)\n .findOne({ where: { id: userId }, select: ['documentId'] });\n\n if (!entry) {\n return null;\n }\n\n return strapi.documents(USER_MODEL_UID).update({\n documentId: entry.documentId,\n data: params,\n populate: ['role'],\n });\n },\n\n /**\n * Promise to fetch a/an user.\n * @return {Promise}\n */\n fetch(id, params) {\n const query = strapi.get('query-params').transform(USER_MODEL_UID, params ?? {});\n\n return strapi.db.query(USER_MODEL_UID).findOne({\n ...query,\n where: {\n $and: [{ id }, query.where || {}],\n },\n });\n },\n\n /**\n * Promise to fetch authenticated user.\n * @return {Promise}\n */\n fetchAuthenticatedUser(id) {\n return strapi.db.query(USER_MODEL_UID).findOne({ where: { id }, populate: ['role'] });\n },\n\n /**\n * Promise to fetch all users.\n * @return {Promise}\n */\n fetchAll(params) {\n const query = strapi.get('query-params').transform(USER_MODEL_UID, params ?? {});\n\n return strapi.db.query(USER_MODEL_UID).findMany(query);\n },\n\n /**\n * Promise to remove a/an user.\n * @return {Promise}\n */\n async remove(params) {\n // Invalidate sessions for all affected users\n const sessionManager = getSessionManager();\n if (sessionManager && sessionManager.hasOrigin('users-permissions') && params.id) {\n await sessionManager('users-permissions').invalidateRefreshToken(String(params.id));\n }\n\n return strapi.db.query(USER_MODEL_UID).delete({ where: params });\n },\n\n validatePassword(password, hash) {\n return bcrypt.compare(password, hash);\n },\n\n async sendConfirmationEmail(user) {\n const userPermissionService = getService('users-permissions');\n const pluginStore = await strapi.store({ type: 'plugin', name: 'users-permissions' });\n const userSchema = strapi.getModel(USER_MODEL_UID);\n\n const settings = await pluginStore\n .get({ key: 'email' })\n .then((storeEmail) => storeEmail.email_confirmation.options);\n\n // Sanitize the template's user information\n const sanitizedUserInfo = await sanitize.sanitizers.defaultSanitizeOutput(\n {\n schema: userSchema,\n getModel: strapi.getModel.bind(strapi),\n },\n user\n );\n\n const confirmationToken = crypto.randomBytes(20).toString('hex');\n\n await this.edit(user.id, { confirmationToken });\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n\n try {\n settings.message = await userPermissionService.template(settings.message, {\n URL: urlJoin(\n strapi.config.get('server.absoluteUrl'),\n apiPrefix,\n '/auth/email-confirmation'\n ),\n SERVER_URL: strapi.config.get('server.absoluteUrl'),\n ADMIN_URL: strapi.config.get('admin.absoluteUrl'),\n USER: sanitizedUserInfo,\n CODE: confirmationToken,\n });\n\n settings.object = await userPermissionService.template(settings.object, {\n USER: sanitizedUserInfo,\n });\n } catch {\n strapi.log.error(\n '[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'\n );\n return;\n }\n\n // Send an email to the user.\n await strapi\n .plugin('email')\n .service('email')\n .send({\n to: user.email,\n from:\n settings.from.email && settings.from.name\n ? `${settings.from.name} <${settings.from.email}>`\n : undefined,\n replyTo: settings.response_email,\n subject: settings.object,\n text: settings.message,\n html: settings.message,\n });\n },\n});\n"],"names":["crypto","require$$0","bcrypt","require$$1","urlJoin","require$$2","sanitize","require$$3","toNumber","getOr","require$$4","getService","require$$5","USER_MODEL_UID","getSessionManager","manager","strapi","sessionManager","user","count","params","db","query","where","ensureHashedPasswords","values","attributes","getModel","key","type","rounds","hash","add","documents","create","data","populate","edit","userId","entry","findOne","id","select","update","documentId","fetch","get","transform","$and","fetchAuthenticatedUser","fetchAll","findMany","remove","hasOrigin","invalidateRefreshToken","String","delete","validatePassword","password","compare","sendConfirmationEmail","userPermissionService","pluginStore","store","name","userSchema","settings","then","storeEmail","email_confirmation","options","sanitizedUserInfo","sanitizers","defaultSanitizeOutput","schema","bind","confirmationToken","randomBytes","toString","apiPrefix","config","message","template","URL","SERVER_URL","ADMIN_URL","USER","CODE","object","log","error","plugin","service","send","to","email","from","undefined","replyTo","response_email","subject","text","html"],"mappings":"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"}
1
+ {"version":3,"file":"user.js","sources":["../../../server/services/user.js"],"sourcesContent":["'use strict';\n\n/**\n * User.js service\n *\n * @description: A set of functions similar to controller's actions to avoid code duplication.\n */\n\nconst crypto = require('crypto');\nconst bcrypt = require('bcryptjs');\nconst urlJoin = require('url-join');\n\nconst { sanitize } = require('@strapi/utils');\nconst { toNumber, getOr } = require('lodash/fp');\nconst { getService } = require('../utils');\n\nconst USER_MODEL_UID = 'plugin::users-permissions.user';\n\nconst getSessionManager = () => {\n const manager = strapi.sessionManager;\n return manager ?? null;\n};\n\nmodule.exports = ({ strapi }) => ({\n /**\n * Promise to count users\n *\n * @return {Promise}\n */\n\n count(params) {\n return strapi.db.query(USER_MODEL_UID).count({ where: params });\n },\n\n /**\n * Hashes password fields in the provided values object if they are present.\n * It checks each key in the values object against the model's attributes and\n * hashes it if the attribute type is 'password',\n *\n * @param {object} values - The object containing the fields to be hashed.\n * @return {object} The values object with hashed password fields if they were present.\n */\n async ensureHashedPasswords(values) {\n const attributes = strapi.getModel(USER_MODEL_UID).attributes;\n\n for (const key in values) {\n if (attributes[key] && attributes[key].type === 'password') {\n // Check if a custom encryption.rounds has been set on the password attribute\n const rounds = toNumber(getOr(10, 'encryption.rounds', attributes[key]));\n values[key] = await bcrypt.hash(values[key], rounds);\n }\n }\n\n return values;\n },\n\n /**\n * Promise to add a/an user.\n * @return {Promise}\n */\n async add(values) {\n // Use the Document Service so relation inputs accept both the internal\n // numeric id (legacy) and the documentId (v5 default) syntax, consistent\n // with every other content-type endpoint. The Document Service hashes\n // `password` attributes itself, so we must not pre-hash here.\n return strapi.documents(USER_MODEL_UID).create({\n data: values,\n populate: ['role'],\n });\n },\n\n /**\n * Promise to edit a/an user.\n * @param {string} userId\n * @param {object} params\n * @return {Promise}\n */\n async edit(userId, params = {}) {\n // The user is addressed by its numeric id (e.g. the `/users/:id` route),\n // but the Document Service updates by documentId. Resolve it first so the\n // relation inputs are processed by the Document Service, which accepts both\n // numeric ids (legacy) and documentIds (v5 default). The Document Service\n // hashes `password` attributes itself, so we must not pre-hash here.\n const entry = await strapi.db\n .query(USER_MODEL_UID)\n .findOne({ where: { id: userId }, select: ['documentId'] });\n\n if (!entry) {\n return null;\n }\n\n return strapi.documents(USER_MODEL_UID).update({\n documentId: entry.documentId,\n data: params,\n populate: ['role'],\n });\n },\n\n /**\n * Promise to fetch a/an user.\n * @return {Promise}\n */\n fetch(id, params) {\n const query = strapi.get('query-params').transform(USER_MODEL_UID, params ?? {});\n\n return strapi.db.query(USER_MODEL_UID).findOne({\n ...query,\n where: {\n $and: [{ id }, query.where || {}],\n },\n });\n },\n\n /**\n * Promise to fetch authenticated user.\n * @return {Promise}\n */\n fetchAuthenticatedUser(id) {\n return strapi.db.query(USER_MODEL_UID).findOne({ where: { id }, populate: ['role'] });\n },\n\n /**\n * Promise to fetch all users.\n * @return {Promise}\n */\n fetchAll(params) {\n const query = strapi.get('query-params').transform(USER_MODEL_UID, params ?? {});\n\n return strapi.db.query(USER_MODEL_UID).findMany(query);\n },\n\n /**\n * Promise to remove a/an user.\n * @return {Promise}\n */\n async remove(params) {\n // Invalidate sessions for all affected users\n const sessionManager = getSessionManager();\n if (sessionManager && sessionManager.hasOrigin('users-permissions') && params.id) {\n await sessionManager('users-permissions').invalidateRefreshToken(String(params.id));\n }\n\n return strapi.db.query(USER_MODEL_UID).delete({ where: params });\n },\n\n validatePassword(password, hash) {\n return bcrypt.compare(password, hash);\n },\n\n async sendConfirmationEmail(user) {\n const userPermissionService = getService('users-permissions');\n const pluginStore = await strapi.store({ type: 'plugin', name: 'users-permissions' });\n const userSchema = strapi.getModel(USER_MODEL_UID);\n\n const settings = await pluginStore\n .get({ key: 'email' })\n .then((storeEmail) => storeEmail.email_confirmation.options);\n\n // Sanitize the template's user information\n const sanitizedUserInfo = await sanitize.sanitizers.defaultSanitizeOutput(\n {\n schema: userSchema,\n getModel: strapi.getModel.bind(strapi),\n },\n user\n );\n\n const confirmationToken = crypto.randomBytes(20).toString('hex');\n\n await this.edit(user.id, { confirmationToken });\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n\n try {\n settings.message = await userPermissionService.template(settings.message, {\n URL: urlJoin(\n strapi.config.get('server.absoluteUrl'),\n apiPrefix,\n '/auth/email-confirmation'\n ),\n SERVER_URL: strapi.config.get('server.absoluteUrl'),\n ADMIN_URL: strapi.config.get('admin.absoluteUrl'),\n USER: sanitizedUserInfo,\n CODE: confirmationToken,\n });\n\n settings.object = await userPermissionService.template(settings.object, {\n USER: sanitizedUserInfo,\n });\n } catch {\n strapi.log.error(\n '[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'\n );\n return;\n }\n\n // Send an email to the user.\n await strapi\n .plugin('email')\n .service('email')\n .send({\n to: user.email,\n from:\n settings.from.email && settings.from.name\n ? `${settings.from.name} <${settings.from.email}>`\n : undefined,\n replyTo: settings.response_email,\n subject: settings.object,\n text: settings.message,\n html: settings.message,\n });\n },\n});\n"],"names":["crypto","require$$0","bcrypt","require$$1","urlJoin","require$$2","sanitize","require$$3","toNumber","getOr","require$$4","getService","require$$5","USER_MODEL_UID","getSessionManager","manager","strapi","sessionManager","user","count","params","db","query","where","ensureHashedPasswords","values","attributes","getModel","key","type","rounds","hash","add","documents","create","data","populate","edit","userId","entry","findOne","id","select","update","documentId","fetch","get","transform","$and","fetchAuthenticatedUser","fetchAll","findMany","remove","hasOrigin","invalidateRefreshToken","String","delete","validatePassword","password","compare","sendConfirmationEmail","userPermissionService","pluginStore","store","name","userSchema","settings","then","storeEmail","email_confirmation","options","sanitizedUserInfo","sanitizers","defaultSanitizeOutput","schema","bind","confirmationToken","randomBytes","toString","apiPrefix","config","message","template","URL","SERVER_URL","ADMIN_URL","USER","CODE","object","log","error","plugin","service","send","to","email","from","undefined","replyTo","response_email","subject","text","html"],"mappings":"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"}
@@ -6,15 +6,22 @@ var require$$2 = require('url-join');
6
6
  var require$$1 = require('@strapi/utils');
7
7
  var index = require('../utils/index.js');
8
8
 
9
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
+
11
+ var require$$0__default$1 = /*#__PURE__*/_interopDefault(require$$0$1);
12
+ var require$$0__default = /*#__PURE__*/_interopDefault(require$$0);
13
+ var require$$2__default = /*#__PURE__*/_interopDefault(require$$2);
14
+ var require$$1__default = /*#__PURE__*/_interopDefault(require$$1);
15
+
9
16
  var usersPermissions;
10
17
  var hasRequiredUsersPermissions;
11
18
  function requireUsersPermissions() {
12
19
  if (hasRequiredUsersPermissions) return usersPermissions;
13
20
  hasRequiredUsersPermissions = 1;
14
- const _ = require$$0$1;
15
- const { filter, map, pipe, prop } = require$$0;
16
- const urlJoin = require$$2;
17
- const { template: { createStrictInterpolationRegExp }, errors, objects, sanitizeRoutesMapForSerialization } = require$$1;
21
+ const _ = require$$0__default$1.default;
22
+ const { filter, map, pipe, prop } = require$$0__default.default;
23
+ const urlJoin = require$$2__default.default;
24
+ const { template: { createStrictInterpolationRegExp }, errors, objects, sanitizeRoutesMapForSerialization } = require$$1__default.default;
18
25
  const { getService } = index.__require();
19
26
  const DEFAULT_PERMISSIONS = [
20
27
  {
@@ -53,6 +60,14 @@ function requireUsersPermissions() {
53
60
  action: 'plugin::users-permissions.auth.logout',
54
61
  roleType: 'authenticated'
55
62
  },
63
+ {
64
+ action: 'plugin::users-permissions.auth.getSessions',
65
+ roleType: 'authenticated'
66
+ },
67
+ {
68
+ action: 'plugin::users-permissions.auth.revokeSession',
69
+ roleType: 'authenticated'
70
+ },
56
71
  {
57
72
  action: 'plugin::users-permissions.user.me',
58
73
  roleType: 'authenticated'
@@ -1 +1 @@
1
- {"version":3,"file":"users-permissions.js","sources":["../../../server/services/users-permissions.js"],"sourcesContent":["'use strict';\n\nconst _ = require('lodash');\nconst { filter, map, pipe, prop } = require('lodash/fp');\nconst urlJoin = require('url-join');\nconst {\n template: { createStrictInterpolationRegExp },\n errors,\n objects,\n sanitizeRoutesMapForSerialization,\n} = require('@strapi/utils');\n\nconst { getService } = require('../utils');\n\nconst DEFAULT_PERMISSIONS = [\n { action: 'plugin::users-permissions.auth.callback', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.connect', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.forgotPassword', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.resetPassword', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.register', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.emailConfirmation', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.sendEmailConfirmation', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.refresh', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.logout', roleType: 'authenticated' },\n { action: 'plugin::users-permissions.user.me', roleType: 'authenticated' },\n { action: 'plugin::users-permissions.auth.changePassword', roleType: 'authenticated' },\n];\n\nconst transformRoutePrefixFor = (pluginName) => (route) => {\n const prefix = route.config && route.config.prefix;\n const path = prefix !== undefined ? `${prefix}${route.path}` : `/${pluginName}${route.path}`;\n\n return {\n ...route,\n path,\n };\n};\n\nmodule.exports = ({ strapi }) => ({\n getActions({ defaultEnable = false } = {}) {\n const actionMap = {};\n\n const isContentApi = (action) => {\n if (!_.has(action, Symbol.for('__type__'))) {\n return false;\n }\n\n return action[Symbol.for('__type__')].includes('content-api');\n };\n\n _.forEach(strapi.apis, (api, apiName) => {\n const controllers = _.reduce(\n api.controllers,\n (acc, controller, controllerName) => {\n const contentApiActions = _.pickBy(controller, isContentApi);\n\n if (_.isEmpty(contentApiActions)) {\n return acc;\n }\n\n acc[controllerName] = _.mapValues(contentApiActions, () => {\n return {\n enabled: defaultEnable,\n policy: '',\n };\n });\n\n return acc;\n },\n {}\n );\n\n if (!_.isEmpty(controllers)) {\n actionMap[`api::${apiName}`] = { controllers };\n }\n });\n\n _.forEach(strapi.plugins, (plugin, pluginName) => {\n const controllers = _.reduce(\n plugin.controllers,\n (acc, controller, controllerName) => {\n const contentApiActions = _.pickBy(controller, isContentApi);\n\n if (_.isEmpty(contentApiActions)) {\n return acc;\n }\n\n acc[controllerName] = _.mapValues(contentApiActions, () => {\n return {\n enabled: defaultEnable,\n policy: '',\n };\n });\n\n return acc;\n },\n {}\n );\n\n if (!_.isEmpty(controllers)) {\n actionMap[`plugin::${pluginName}`] = { controllers };\n }\n });\n\n // Return a deeply cloned version to avoid circular references\n return _.cloneDeep(actionMap);\n },\n\n async getRoutes() {\n const routesMap = {};\n\n _.forEach(strapi.apis, (api, apiName) => {\n const routes = _.flatMap(api.routes, (route) => {\n if (_.has(route, 'routes')) {\n return route.routes;\n }\n\n return route;\n }).filter((route) => route.info.type === 'content-api');\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`api::${apiName}`] = routes.map((route) => ({\n ...route,\n path: urlJoin(apiPrefix, route.path),\n }));\n });\n\n _.forEach(strapi.plugins, (plugin, pluginName) => {\n const transformPrefix = transformRoutePrefixFor(pluginName);\n\n const routes = _.flatMap(plugin.routes, (route) => {\n if (_.has(route, 'routes')) {\n return route.routes.map(transformPrefix);\n }\n\n return transformPrefix(route);\n }).filter((route) => route.info.type === 'content-api');\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`plugin::${pluginName}`] = routes.map((route) => ({\n ...route,\n path: urlJoin(apiPrefix, route.path),\n }));\n });\n\n return sanitizeRoutesMapForSerialization(routesMap);\n },\n\n async syncPermissions() {\n const roles = await strapi.db.query('plugin::users-permissions.role').findMany();\n const dbPermissions = await strapi.db.query('plugin::users-permissions.permission').findMany();\n\n const permissionsFoundInDB = _.uniq(_.map(dbPermissions, 'action'));\n\n const appActions = _.flatMap(strapi.apis, (api, apiName) => {\n return _.flatMap(api.controllers, (controller, controllerName) => {\n return _.keys(controller).map((actionName) => {\n return `api::${apiName}.${controllerName}.${actionName}`;\n });\n });\n });\n\n const pluginsActions = _.flatMap(strapi.plugins, (plugin, pluginName) => {\n return _.flatMap(plugin.controllers, (controller, controllerName) => {\n return _.keys(controller).map((actionName) => {\n return `plugin::${pluginName}.${controllerName}.${actionName}`;\n });\n });\n });\n\n const allActions = [...appActions, ...pluginsActions];\n\n const toDelete = _.difference(permissionsFoundInDB, allActions);\n\n await Promise.all(\n toDelete.map((action) => {\n return strapi.db\n .query('plugin::users-permissions.permission')\n .delete({ where: { action } });\n })\n );\n\n if (permissionsFoundInDB.length === 0) {\n // create default permissions\n for (const role of roles) {\n const toCreate = pipe(\n filter(({ roleType }) => roleType === role.type || roleType === null),\n map(prop('action'))\n )(DEFAULT_PERMISSIONS);\n\n await Promise.all(\n toCreate.map((action) => {\n return strapi.db.query('plugin::users-permissions.permission').create({\n data: {\n action,\n role: role.id,\n },\n });\n })\n );\n }\n }\n },\n\n async initialize() {\n const roleCount = await strapi.db.query('plugin::users-permissions.role').count();\n\n if (roleCount === 0) {\n await strapi.db.query('plugin::users-permissions.role').create({\n data: {\n name: 'Authenticated',\n description: 'Default role given to authenticated user.',\n type: 'authenticated',\n },\n });\n\n await strapi.db.query('plugin::users-permissions.role').create({\n data: {\n name: 'Public',\n description: 'Default role given to unauthenticated user.',\n type: 'public',\n },\n });\n }\n\n return getService('users-permissions').syncPermissions();\n },\n\n async updateUserRole(user, role) {\n return strapi.db\n .query('plugin::users-permissions.user')\n .update({ where: { id: user.id }, data: { role } });\n },\n\n template(layout, data) {\n const allowedTemplateVariables = objects.keysDeep(data);\n\n // Create a strict interpolation RegExp based on possible variable names\n const interpolate = createStrictInterpolationRegExp(allowedTemplateVariables, 'g');\n\n try {\n return _.template(layout, { interpolate, evaluate: false, escape: false })(data);\n } catch (e) {\n throw new errors.ApplicationError('Invalid email template');\n }\n },\n});\n"],"names":["_","require$$0","filter","map","pipe","prop","require$$1","urlJoin","require$$2","template","createStrictInterpolationRegExp","errors","objects","sanitizeRoutesMapForSerialization","require$$3","getService","require$$4","DEFAULT_PERMISSIONS","action","roleType","transformRoutePrefixFor","pluginName","route","prefix","config","path","undefined","usersPermissions","strapi","getActions","defaultEnable","actionMap","isContentApi","has","Symbol","for","includes","forEach","apis","api","apiName","controllers","reduce","acc","controller","controllerName","contentApiActions","pickBy","isEmpty","mapValues","enabled","policy","plugins","plugin","cloneDeep","getRoutes","routesMap","routes","flatMap","info","type","length","apiPrefix","get","transformPrefix","syncPermissions","roles","db","query","findMany","dbPermissions","permissionsFoundInDB","uniq","appActions","keys","actionName","pluginsActions","allActions","toDelete","difference","Promise","all","delete","where","role","toCreate","create","data","id","initialize","roleCount","count","name","description","updateUserRole","user","update","layout","allowedTemplateVariables","keysDeep","interpolate","evaluate","escape","e","ApplicationError"],"mappings":"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"}
1
+ {"version":3,"file":"users-permissions.js","sources":["../../../server/services/users-permissions.js"],"sourcesContent":["'use strict';\n\nconst _ = require('lodash');\nconst { filter, map, pipe, prop } = require('lodash/fp');\nconst urlJoin = require('url-join');\nconst {\n template: { createStrictInterpolationRegExp },\n errors,\n objects,\n sanitizeRoutesMapForSerialization,\n} = require('@strapi/utils');\n\nconst { getService } = require('../utils');\n\nconst DEFAULT_PERMISSIONS = [\n { action: 'plugin::users-permissions.auth.callback', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.connect', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.forgotPassword', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.resetPassword', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.register', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.emailConfirmation', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.sendEmailConfirmation', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.refresh', roleType: 'public' },\n { action: 'plugin::users-permissions.auth.logout', roleType: 'authenticated' },\n { action: 'plugin::users-permissions.auth.getSessions', roleType: 'authenticated' },\n { action: 'plugin::users-permissions.auth.revokeSession', roleType: 'authenticated' },\n { action: 'plugin::users-permissions.user.me', roleType: 'authenticated' },\n { action: 'plugin::users-permissions.auth.changePassword', roleType: 'authenticated' },\n];\n\nconst transformRoutePrefixFor = (pluginName) => (route) => {\n const prefix = route.config && route.config.prefix;\n const path = prefix !== undefined ? `${prefix}${route.path}` : `/${pluginName}${route.path}`;\n\n return {\n ...route,\n path,\n };\n};\n\nmodule.exports = ({ strapi }) => ({\n getActions({ defaultEnable = false } = {}) {\n const actionMap = {};\n\n const isContentApi = (action) => {\n if (!_.has(action, Symbol.for('__type__'))) {\n return false;\n }\n\n return action[Symbol.for('__type__')].includes('content-api');\n };\n\n _.forEach(strapi.apis, (api, apiName) => {\n const controllers = _.reduce(\n api.controllers,\n (acc, controller, controllerName) => {\n const contentApiActions = _.pickBy(controller, isContentApi);\n\n if (_.isEmpty(contentApiActions)) {\n return acc;\n }\n\n acc[controllerName] = _.mapValues(contentApiActions, () => {\n return {\n enabled: defaultEnable,\n policy: '',\n };\n });\n\n return acc;\n },\n {}\n );\n\n if (!_.isEmpty(controllers)) {\n actionMap[`api::${apiName}`] = { controllers };\n }\n });\n\n _.forEach(strapi.plugins, (plugin, pluginName) => {\n const controllers = _.reduce(\n plugin.controllers,\n (acc, controller, controllerName) => {\n const contentApiActions = _.pickBy(controller, isContentApi);\n\n if (_.isEmpty(contentApiActions)) {\n return acc;\n }\n\n acc[controllerName] = _.mapValues(contentApiActions, () => {\n return {\n enabled: defaultEnable,\n policy: '',\n };\n });\n\n return acc;\n },\n {}\n );\n\n if (!_.isEmpty(controllers)) {\n actionMap[`plugin::${pluginName}`] = { controllers };\n }\n });\n\n // Return a deeply cloned version to avoid circular references\n return _.cloneDeep(actionMap);\n },\n\n async getRoutes() {\n const routesMap = {};\n\n _.forEach(strapi.apis, (api, apiName) => {\n const routes = _.flatMap(api.routes, (route) => {\n if (_.has(route, 'routes')) {\n return route.routes;\n }\n\n return route;\n }).filter((route) => route.info.type === 'content-api');\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`api::${apiName}`] = routes.map((route) => ({\n ...route,\n path: urlJoin(apiPrefix, route.path),\n }));\n });\n\n _.forEach(strapi.plugins, (plugin, pluginName) => {\n const transformPrefix = transformRoutePrefixFor(pluginName);\n\n const routes = _.flatMap(plugin.routes, (route) => {\n if (_.has(route, 'routes')) {\n return route.routes.map(transformPrefix);\n }\n\n return transformPrefix(route);\n }).filter((route) => route.info.type === 'content-api');\n\n if (routes.length === 0) {\n return;\n }\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n routesMap[`plugin::${pluginName}`] = routes.map((route) => ({\n ...route,\n path: urlJoin(apiPrefix, route.path),\n }));\n });\n\n return sanitizeRoutesMapForSerialization(routesMap);\n },\n\n async syncPermissions() {\n const roles = await strapi.db.query('plugin::users-permissions.role').findMany();\n const dbPermissions = await strapi.db.query('plugin::users-permissions.permission').findMany();\n\n const permissionsFoundInDB = _.uniq(_.map(dbPermissions, 'action'));\n\n const appActions = _.flatMap(strapi.apis, (api, apiName) => {\n return _.flatMap(api.controllers, (controller, controllerName) => {\n return _.keys(controller).map((actionName) => {\n return `api::${apiName}.${controllerName}.${actionName}`;\n });\n });\n });\n\n const pluginsActions = _.flatMap(strapi.plugins, (plugin, pluginName) => {\n return _.flatMap(plugin.controllers, (controller, controllerName) => {\n return _.keys(controller).map((actionName) => {\n return `plugin::${pluginName}.${controllerName}.${actionName}`;\n });\n });\n });\n\n const allActions = [...appActions, ...pluginsActions];\n\n const toDelete = _.difference(permissionsFoundInDB, allActions);\n\n await Promise.all(\n toDelete.map((action) => {\n return strapi.db\n .query('plugin::users-permissions.permission')\n .delete({ where: { action } });\n })\n );\n\n if (permissionsFoundInDB.length === 0) {\n // create default permissions\n for (const role of roles) {\n const toCreate = pipe(\n filter(({ roleType }) => roleType === role.type || roleType === null),\n map(prop('action'))\n )(DEFAULT_PERMISSIONS);\n\n await Promise.all(\n toCreate.map((action) => {\n return strapi.db.query('plugin::users-permissions.permission').create({\n data: {\n action,\n role: role.id,\n },\n });\n })\n );\n }\n }\n },\n\n async initialize() {\n const roleCount = await strapi.db.query('plugin::users-permissions.role').count();\n\n if (roleCount === 0) {\n await strapi.db.query('plugin::users-permissions.role').create({\n data: {\n name: 'Authenticated',\n description: 'Default role given to authenticated user.',\n type: 'authenticated',\n },\n });\n\n await strapi.db.query('plugin::users-permissions.role').create({\n data: {\n name: 'Public',\n description: 'Default role given to unauthenticated user.',\n type: 'public',\n },\n });\n }\n\n return getService('users-permissions').syncPermissions();\n },\n\n async updateUserRole(user, role) {\n return strapi.db\n .query('plugin::users-permissions.user')\n .update({ where: { id: user.id }, data: { role } });\n },\n\n template(layout, data) {\n const allowedTemplateVariables = objects.keysDeep(data);\n\n // Create a strict interpolation RegExp based on possible variable names\n const interpolate = createStrictInterpolationRegExp(allowedTemplateVariables, 'g');\n\n try {\n return _.template(layout, { interpolate, evaluate: false, escape: false })(data);\n } catch (e) {\n throw new errors.ApplicationError('Invalid email template');\n }\n },\n});\n"],"names":["_","require$$0","filter","map","pipe","prop","require$$1","urlJoin","require$$2","template","createStrictInterpolationRegExp","errors","objects","sanitizeRoutesMapForSerialization","require$$3","getService","require$$4","DEFAULT_PERMISSIONS","action","roleType","transformRoutePrefixFor","pluginName","route","prefix","config","path","undefined","usersPermissions","strapi","getActions","defaultEnable","actionMap","isContentApi","has","Symbol","for","includes","forEach","apis","api","apiName","controllers","reduce","acc","controller","controllerName","contentApiActions","pickBy","isEmpty","mapValues","enabled","policy","plugins","plugin","cloneDeep","getRoutes","routesMap","routes","flatMap","info","type","length","apiPrefix","get","transformPrefix","syncPermissions","roles","db","query","findMany","dbPermissions","permissionsFoundInDB","uniq","appActions","keys","actionName","pluginsActions","allActions","toDelete","difference","Promise","all","delete","where","role","toCreate","create","data","id","initialize","roleCount","count","name","description","updateUserRole","user","update","layout","allowedTemplateVariables","keysDeep","interpolate","evaluate","escape","e","ApplicationError"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA,IAAA,MAAMA,CAAAA,GAAIC,6BAAAA;IACV,MAAM,EAAEC,MAAM,EAAEC,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAGC,2BAAAA;AACpC,IAAA,MAAMC,OAAAA,GAAUC,2BAAAA;AAChB,IAAA,MAAM,EACJC,QAAAA,EAAU,EAAEC,+BAA+B,EAAE,EAC7CC,MAAM,EACNC,OAAO,EACPC,iCAAiC,EAClC,GAAGC,2BAAAA;IAEJ,MAAM,EAAEC,UAAU,EAAE,GAAGC,eAAAA,EAAAA;AAEvB,IAAA,MAAMC,mBAAAA,GAAsB;AAC1B,QAAA;YAAEC,MAAAA,EAAQ,yCAAA;YAA2CC,QAAAA,EAAU;AAAQ,SAAA;AACvE,QAAA;YAAED,MAAAA,EAAQ,wCAAA;YAA0CC,QAAAA,EAAU;AAAQ,SAAA;AACtE,QAAA;YAAED,MAAAA,EAAQ,+CAAA;YAAiDC,QAAAA,EAAU;AAAQ,SAAA;AAC7E,QAAA;YAAED,MAAAA,EAAQ,8CAAA;YAAgDC,QAAAA,EAAU;AAAQ,SAAA;AAC5E,QAAA;YAAED,MAAAA,EAAQ,yCAAA;YAA2CC,QAAAA,EAAU;AAAQ,SAAA;AACvE,QAAA;YAAED,MAAAA,EAAQ,kDAAA;YAAoDC,QAAAA,EAAU;AAAQ,SAAA;AAChF,QAAA;YAAED,MAAAA,EAAQ,sDAAA;YAAwDC,QAAAA,EAAU;AAAQ,SAAA;AACpF,QAAA;YAAED,MAAAA,EAAQ,wCAAA;YAA0CC,QAAAA,EAAU;AAAQ,SAAA;AACtE,QAAA;YAAED,MAAAA,EAAQ,uCAAA;YAAyCC,QAAAA,EAAU;AAAe,SAAA;AAC5E,QAAA;YAAED,MAAAA,EAAQ,4CAAA;YAA8CC,QAAAA,EAAU;AAAe,SAAA;AACjF,QAAA;YAAED,MAAAA,EAAQ,8CAAA;YAAgDC,QAAAA,EAAU;AAAe,SAAA;AACnF,QAAA;YAAED,MAAAA,EAAQ,mCAAA;YAAqCC,QAAAA,EAAU;AAAe,SAAA;AACxE,QAAA;YAAED,MAAAA,EAAQ,+CAAA;YAAiDC,QAAAA,EAAU;AAAe;AACrF,KAAA;IAED,MAAMC,uBAAAA,GAA0B,CAACC,UAAAA,GAAe,CAACC,KAAAA,GAAAA;AAC/C,YAAA,MAAMC,SAASD,KAAAA,CAAME,MAAM,IAAIF,KAAAA,CAAME,MAAM,CAACD,MAAM;AAClD,YAAA,MAAME,IAAAA,GAAOF,MAAAA,KAAWG,SAAAA,GAAY,CAAA,EAAGH,SAASD,KAAAA,CAAMG,IAAI,CAAA,CAAE,GAAG,CAAC,CAAC,EAAEJ,UAAAA,CAAAA,EAAaC,KAAAA,CAAMG,IAAI,CAAA,CAAE;YAE5F,OAAO;AACL,gBAAA,GAAGH,KAAK;AACRG,gBAAAA;AACJ,aAAA;AACA,QAAA,CAAA;AAEAE,IAAAA,gBAAAA,GAAiB,CAAC,EAAEC,MAAM,EAAE,IAAM;AAChCC,YAAAA,UAAAA,CAAAA,CAAW,EAAEC,aAAAA,GAAgB,KAAK,EAAE,GAAG,EAAE,EAAA;AACvC,gBAAA,MAAMC,YAAY,EAAA;AAElB,gBAAA,MAAMC,eAAe,CAACd,MAAAA,GAAAA;oBACpB,IAAI,CAAClB,EAAEiC,GAAG,CAACf,QAAQgB,MAAAA,CAAOC,GAAG,CAAC,UAAA,CAAA,CAAA,EAAc;wBAC1C,OAAO,KAAA;AACf,oBAAA;oBAEM,OAAOjB,MAAM,CAACgB,MAAAA,CAAOC,GAAG,CAAC,UAAA,CAAA,CAAY,CAACC,QAAQ,CAAC,aAAA,CAAA;AACrD,gBAAA,CAAA;AAEIpC,gBAAAA,CAAAA,CAAEqC,OAAO,CAACT,MAAAA,CAAOU,IAAI,EAAE,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;oBAC3B,MAAMC,WAAAA,GAAczC,EAAE0C,MAAM,CAC1BH,IAAIE,WAAW,EACf,CAACE,GAAAA,EAAKC,UAAAA,EAAYC,cAAAA,GAAAA;AAChB,wBAAA,MAAMC,iBAAAA,GAAoB9C,CAAAA,CAAE+C,MAAM,CAACH,UAAAA,EAAYZ,YAAAA,CAAAA;wBAE/C,IAAIhC,CAAAA,CAAEgD,OAAO,CAACF,iBAAAA,CAAAA,EAAoB;4BAChC,OAAOH,GAAAA;AACnB,wBAAA;AAEUA,wBAAAA,GAAG,CAACE,cAAAA,CAAe,GAAG7C,CAAAA,CAAEiD,SAAS,CAACH,iBAAAA,EAAmB,IAAA;4BACnD,OAAO;gCACLI,OAAAA,EAASpB,aAAAA;gCACTqB,MAAAA,EAAQ;AACtB,6BAAA;AACA,wBAAA,CAAA,CAAA;wBAEU,OAAOR,GAAAA;AACjB,oBAAA,CAAA,EACQ,EAAA,CAAA;AAGF,oBAAA,IAAI,CAAC3C,CAAAA,CAAEgD,OAAO,CAACP,WAAAA,CAAAA,EAAc;AAC3BV,wBAAAA,SAAS,CAAC,CAAC,KAAK,EAAES,OAAAA,CAAAA,CAAS,CAAC,GAAG;AAAEC,4BAAAA;;AACzC,oBAAA;AACA,gBAAA,CAAA,CAAA;AAEIzC,gBAAAA,CAAAA,CAAEqC,OAAO,CAACT,MAAAA,CAAOwB,OAAO,EAAE,CAACC,MAAAA,EAAQhC,UAAAA,GAAAA;oBACjC,MAAMoB,WAAAA,GAAczC,EAAE0C,MAAM,CAC1BW,OAAOZ,WAAW,EAClB,CAACE,GAAAA,EAAKC,UAAAA,EAAYC,cAAAA,GAAAA;AAChB,wBAAA,MAAMC,iBAAAA,GAAoB9C,CAAAA,CAAE+C,MAAM,CAACH,UAAAA,EAAYZ,YAAAA,CAAAA;wBAE/C,IAAIhC,CAAAA,CAAEgD,OAAO,CAACF,iBAAAA,CAAAA,EAAoB;4BAChC,OAAOH,GAAAA;AACnB,wBAAA;AAEUA,wBAAAA,GAAG,CAACE,cAAAA,CAAe,GAAG7C,CAAAA,CAAEiD,SAAS,CAACH,iBAAAA,EAAmB,IAAA;4BACnD,OAAO;gCACLI,OAAAA,EAASpB,aAAAA;gCACTqB,MAAAA,EAAQ;AACtB,6BAAA;AACA,wBAAA,CAAA,CAAA;wBAEU,OAAOR,GAAAA;AACjB,oBAAA,CAAA,EACQ,EAAA,CAAA;AAGF,oBAAA,IAAI,CAAC3C,CAAAA,CAAEgD,OAAO,CAACP,WAAAA,CAAAA,EAAc;AAC3BV,wBAAAA,SAAS,CAAC,CAAC,QAAQ,EAAEV,UAAAA,CAAAA,CAAY,CAAC,GAAG;AAAEoB,4BAAAA;;AAC/C,oBAAA;AACA,gBAAA,CAAA,CAAA;;gBAGI,OAAOzC,CAAAA,CAAEsD,SAAS,CAACvB,SAAAA,CAAAA;AACvB,YAAA,CAAA;YAEE,MAAMwB,SAAAA,CAAAA,GAAAA;AACJ,gBAAA,MAAMC,YAAY,EAAA;AAElBxD,gBAAAA,CAAAA,CAAEqC,OAAO,CAACT,MAAAA,CAAOU,IAAI,EAAE,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;AAC3B,oBAAA,MAAMiB,SAASzD,CAAAA,CAAE0D,OAAO,CAACnB,GAAAA,CAAIkB,MAAM,EAAE,CAACnC,KAAAA,GAAAA;AACpC,wBAAA,IAAItB,CAAAA,CAAEiC,GAAG,CAACX,KAAAA,EAAO,QAAA,CAAA,EAAW;AAC1B,4BAAA,OAAOA,MAAMmC,MAAM;AAC7B,wBAAA;wBAEQ,OAAOnC,KAAAA;oBACf,CAAA,CAAA,CAASpB,MAAM,CAAC,CAACoB,KAAAA,GAAUA,MAAMqC,IAAI,CAACC,IAAI,KAAK,aAAA,CAAA;oBAEzC,IAAIH,MAAAA,CAAOI,MAAM,KAAK,CAAA,EAAG;AACvB,wBAAA;AACR,oBAAA;AAEM,oBAAA,MAAMC,SAAAA,GAAYlC,MAAAA,CAAOJ,MAAM,CAACuC,GAAG,CAAC,iBAAA,CAAA;AACpCP,oBAAAA,SAAS,CAAC,CAAC,KAAK,EAAEhB,OAAAA,CAAAA,CAAS,CAAC,GAAGiB,MAAAA,CAAOtD,GAAG,CAAC,CAACmB,KAAAA,IAAW;AACpD,4BAAA,GAAGA,KAAK;4BACRG,IAAAA,EAAMlB,OAAAA,CAAQuD,SAAAA,EAAWxC,KAAAA,CAAMG,IAAI;yBAC3C,CAAA,CAAA;AACA,gBAAA,CAAA,CAAA;AAEIzB,gBAAAA,CAAAA,CAAEqC,OAAO,CAACT,MAAAA,CAAOwB,OAAO,EAAE,CAACC,MAAAA,EAAQhC,UAAAA,GAAAA;AACjC,oBAAA,MAAM2C,kBAAkB5C,uBAAAA,CAAwBC,UAAAA,CAAAA;AAEhD,oBAAA,MAAMoC,SAASzD,CAAAA,CAAE0D,OAAO,CAACL,MAAAA,CAAOI,MAAM,EAAE,CAACnC,KAAAA,GAAAA;AACvC,wBAAA,IAAItB,CAAAA,CAAEiC,GAAG,CAACX,KAAAA,EAAO,QAAA,CAAA,EAAW;AAC1B,4BAAA,OAAOA,KAAAA,CAAMmC,MAAM,CAACtD,GAAG,CAAC6D,eAAAA,CAAAA;AAClC,wBAAA;AAEQ,wBAAA,OAAOA,eAAAA,CAAgB1C,KAAAA,CAAAA;oBAC/B,CAAA,CAAA,CAASpB,MAAM,CAAC,CAACoB,KAAAA,GAAUA,MAAMqC,IAAI,CAACC,IAAI,KAAK,aAAA,CAAA;oBAEzC,IAAIH,MAAAA,CAAOI,MAAM,KAAK,CAAA,EAAG;AACvB,wBAAA;AACR,oBAAA;AAEM,oBAAA,MAAMC,SAAAA,GAAYlC,MAAAA,CAAOJ,MAAM,CAACuC,GAAG,CAAC,iBAAA,CAAA;AACpCP,oBAAAA,SAAS,CAAC,CAAC,QAAQ,EAAEnC,UAAAA,CAAAA,CAAY,CAAC,GAAGoC,MAAAA,CAAOtD,GAAG,CAAC,CAACmB,KAAAA,IAAW;AAC1D,4BAAA,GAAGA,KAAK;4BACRG,IAAAA,EAAMlB,OAAAA,CAAQuD,SAAAA,EAAWxC,KAAAA,CAAMG,IAAI;yBAC3C,CAAA,CAAA;AACA,gBAAA,CAAA,CAAA;AAEI,gBAAA,OAAOZ,iCAAAA,CAAkC2C,SAAAA,CAAAA;AAC7C,YAAA,CAAA;YAEE,MAAMS,eAAAA,CAAAA,GAAAA;gBACJ,MAAMC,KAAAA,GAAQ,MAAMtC,MAAAA,CAAOuC,EAAE,CAACC,KAAK,CAAC,kCAAkCC,QAAQ,EAAA;gBAC9E,MAAMC,aAAAA,GAAgB,MAAM1C,MAAAA,CAAOuC,EAAE,CAACC,KAAK,CAAC,wCAAwCC,QAAQ,EAAA;AAE5F,gBAAA,MAAME,uBAAuBvE,CAAAA,CAAEwE,IAAI,CAACxE,CAAAA,CAAEG,GAAG,CAACmE,aAAAA,EAAe,QAAA,CAAA,CAAA;gBAEzD,MAAMG,UAAAA,GAAazE,EAAE0D,OAAO,CAAC9B,OAAOU,IAAI,EAAE,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;AAC9C,oBAAA,OAAOxC,EAAE0D,OAAO,CAACnB,IAAIE,WAAW,EAAE,CAACG,UAAAA,EAAYC,cAAAA,GAAAA;AAC7C,wBAAA,OAAO7C,EAAE0E,IAAI,CAAC9B,UAAAA,CAAAA,CAAYzC,GAAG,CAAC,CAACwE,UAAAA,GAAAA;4BAC7B,OAAO,CAAC,KAAK,EAAEnC,OAAAA,CAAQ,CAAC,EAAEK,cAAAA,CAAe,CAAC,EAAE8B,UAAAA,CAAAA,CAAY;AAClE,wBAAA,CAAA,CAAA;AACA,oBAAA,CAAA,CAAA;AACA,gBAAA,CAAA,CAAA;gBAEI,MAAMC,cAAAA,GAAiB5E,EAAE0D,OAAO,CAAC9B,OAAOwB,OAAO,EAAE,CAACC,MAAAA,EAAQhC,UAAAA,GAAAA;AACxD,oBAAA,OAAOrB,EAAE0D,OAAO,CAACL,OAAOZ,WAAW,EAAE,CAACG,UAAAA,EAAYC,cAAAA,GAAAA;AAChD,wBAAA,OAAO7C,EAAE0E,IAAI,CAAC9B,UAAAA,CAAAA,CAAYzC,GAAG,CAAC,CAACwE,UAAAA,GAAAA;4BAC7B,OAAO,CAAC,QAAQ,EAAEtD,UAAAA,CAAW,CAAC,EAAEwB,cAAAA,CAAe,CAAC,EAAE8B,UAAAA,CAAAA,CAAY;AACxE,wBAAA,CAAA,CAAA;AACA,oBAAA,CAAA,CAAA;AACA,gBAAA,CAAA,CAAA;AAEI,gBAAA,MAAME,UAAAA,GAAa;AAAIJ,oBAAAA,GAAAA,UAAAA;AAAeG,oBAAAA,GAAAA;AAAe,iBAAA;AAErD,gBAAA,MAAME,QAAAA,GAAW9E,CAAAA,CAAE+E,UAAU,CAACR,oBAAAA,EAAsBM,UAAAA,CAAAA;AAEpD,gBAAA,MAAMG,QAAQC,GAAG,CACfH,QAAAA,CAAS3E,GAAG,CAAC,CAACe,MAAAA,GAAAA;AACZ,oBAAA,OAAOU,OAAOuC,EAAE,CACbC,KAAK,CAAC,sCAAA,CAAA,CACNc,MAAM,CAAC;wBAAEC,KAAAA,EAAO;AAAEjE,4BAAAA;AAAM;AAAE,qBAAA,CAAA;AACrC,gBAAA,CAAA,CAAA,CAAA;gBAGI,IAAIqD,oBAAAA,CAAqBV,MAAM,KAAK,CAAA,EAAG;;oBAErC,KAAK,MAAMuB,QAAQlB,KAAAA,CAAO;AACxB,wBAAA,MAAMmB,WAAWjF,IAAAA,CACfF,MAAAA,CAAO,CAAC,EAAEiB,QAAQ,EAAE,GAAKA,QAAAA,KAAaiE,IAAAA,CAAKxB,IAAI,IAAIzC,QAAAA,KAAa,IAAA,CAAA,EAChEhB,GAAAA,CAAIE,KAAK,QAAA,CAAA,CAAA,CAAA,CACTY,mBAAAA,CAAAA;AAEF,wBAAA,MAAM+D,QAAQC,GAAG,CACfI,QAAAA,CAASlF,GAAG,CAAC,CAACe,MAAAA,GAAAA;AACZ,4BAAA,OAAOU,OAAOuC,EAAE,CAACC,KAAK,CAAC,sCAAA,CAAA,CAAwCkB,MAAM,CAAC;gCACpEC,IAAAA,EAAM;AACJrE,oCAAAA,MAAAA;AACAkE,oCAAAA,IAAAA,EAAMA,KAAKI;AAC3B;AACA,6BAAA,CAAA;AACA,wBAAA,CAAA,CAAA,CAAA;AAEA,oBAAA;AACA,gBAAA;AACA,YAAA,CAAA;YAEE,MAAMC,UAAAA,CAAAA,GAAAA;gBACJ,MAAMC,SAAAA,GAAY,MAAM9D,MAAAA,CAAOuC,EAAE,CAACC,KAAK,CAAC,kCAAkCuB,KAAK,EAAA;AAE/E,gBAAA,IAAID,cAAc,CAAA,EAAG;AACnB,oBAAA,MAAM9D,OAAOuC,EAAE,CAACC,KAAK,CAAC,gCAAA,CAAA,CAAkCkB,MAAM,CAAC;wBAC7DC,IAAAA,EAAM;4BACJK,IAAAA,EAAM,eAAA;4BACNC,WAAAA,EAAa,2CAAA;4BACbjC,IAAAA,EAAM;AAChB;AACA,qBAAA,CAAA;AAEM,oBAAA,MAAMhC,OAAOuC,EAAE,CAACC,KAAK,CAAC,gCAAA,CAAA,CAAkCkB,MAAM,CAAC;wBAC7DC,IAAAA,EAAM;4BACJK,IAAAA,EAAM,QAAA;4BACNC,WAAAA,EAAa,6CAAA;4BACbjC,IAAAA,EAAM;AAChB;AACA,qBAAA,CAAA;AACA,gBAAA;gBAEI,OAAO7C,UAAAA,CAAW,qBAAqBkD,eAAe,EAAA;AAC1D,YAAA,CAAA;YAEE,MAAM6B,cAAAA,CAAAA,CAAeC,IAAI,EAAEX,IAAI,EAAA;AAC7B,gBAAA,OAAOxD,OAAOuC,EAAE,CACbC,KAAK,CAAC,gCAAA,CAAA,CACN4B,MAAM,CAAC;oBAAEb,KAAAA,EAAO;AAAEK,wBAAAA,EAAAA,EAAIO,KAAKP;AAAE,qBAAA;oBAAID,IAAAA,EAAM;AAAEH,wBAAAA;AAAI;AAAE,iBAAA,CAAA;AACtD,YAAA,CAAA;YAEE3E,QAAAA,CAAAA,CAASwF,MAAM,EAAEV,IAAI,EAAA;gBACnB,MAAMW,wBAAAA,GAA2BtF,OAAAA,CAAQuF,QAAQ,CAACZ,IAAAA,CAAAA;;gBAGlD,MAAMa,WAAAA,GAAc1F,gCAAgCwF,wBAAAA,EAA0B,GAAA,CAAA;gBAE9E,IAAI;oBACF,OAAOlG,CAAAA,CAAES,QAAQ,CAACwF,MAAAA,EAAQ;AAAEG,wBAAAA,WAAAA;wBAAaC,QAAAA,EAAU,KAAA;wBAAOC,MAAAA,EAAQ;uBAASf,IAAAA,CAAAA;AACjF,gBAAA,CAAA,CAAM,OAAOgB,CAAAA,EAAG;oBACV,MAAM,IAAI5F,MAAAA,CAAO6F,gBAAgB,CAAC,wBAAA,CAAA;AACxC,gBAAA;AACA,YAAA;SACA,CAAA;;;;;;"}
@@ -51,6 +51,14 @@ function requireUsersPermissions() {
51
51
  action: 'plugin::users-permissions.auth.logout',
52
52
  roleType: 'authenticated'
53
53
  },
54
+ {
55
+ action: 'plugin::users-permissions.auth.getSessions',
56
+ roleType: 'authenticated'
57
+ },
58
+ {
59
+ action: 'plugin::users-permissions.auth.revokeSession',
60
+ roleType: 'authenticated'
61
+ },
54
62
  {
55
63
  action: 'plugin::users-permissions.user.me',
56
64
  roleType: 'authenticated'