@strapi/plugin-users-permissions 5.9.0 → 5.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +2 -1
- package/admin/src/components/BoundRoute/index.jsx +1 -1
- package/admin/src/components/FormModal/Input/index.jsx +1 -1
- package/admin/src/components/FormModal/index.jsx +1 -1
- package/admin/src/components/Policies/index.jsx +1 -1
- package/admin/src/index.js +2 -2
- package/admin/src/pages/AdvancedSettings/index.jsx +1 -1
- package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +1 -1
- package/admin/src/pages/EmailTemplates/components/EmailTable.jsx +1 -1
- package/admin/src/pages/Roles/index.jsx +1 -1
- package/admin/src/pages/Roles/pages/ListPage/components/TableBody.jsx +1 -1
- package/admin/src/pluginId.js +2 -2
- package/dist/admin/chunks/ar-BJwjobLp.js +45 -0
- package/dist/admin/chunks/ar-BJwjobLp.js.map +1 -0
- package/dist/admin/chunks/ar-G6bUGuUb.mjs +43 -0
- package/dist/admin/chunks/ar-G6bUGuUb.mjs.map +1 -0
- package/dist/admin/chunks/cs-Bu59JqhG.mjs +49 -0
- package/dist/admin/chunks/cs-Bu59JqhG.mjs.map +1 -0
- package/dist/admin/chunks/cs-uS_SIEo8.js +51 -0
- package/dist/admin/chunks/cs-uS_SIEo8.js.map +1 -0
- package/dist/admin/chunks/de-7MVMrqqI.js +63 -0
- package/dist/admin/chunks/de-7MVMrqqI.js.map +1 -0
- package/dist/admin/chunks/de-B81A69_5.mjs +61 -0
- package/dist/admin/chunks/de-B81A69_5.mjs.map +1 -0
- package/dist/admin/chunks/dk-BaelzvBE.mjs +85 -0
- package/dist/admin/chunks/dk-BaelzvBE.mjs.map +1 -0
- package/dist/admin/chunks/dk-DwCLGmy9.js +87 -0
- package/dist/admin/chunks/dk-DwCLGmy9.js.map +1 -0
- package/dist/admin/chunks/en-BhgCBe7M.mjs +85 -0
- package/dist/admin/chunks/en-BhgCBe7M.mjs.map +1 -0
- package/dist/admin/chunks/en-DwQjkHi_.js +87 -0
- package/dist/admin/chunks/en-DwQjkHi_.js.map +1 -0
- package/dist/admin/chunks/es-B0wXmvRj.mjs +85 -0
- package/dist/admin/chunks/es-B0wXmvRj.mjs.map +1 -0
- package/dist/admin/chunks/es-BOJOedG5.js +87 -0
- package/dist/admin/chunks/es-BOJOedG5.js.map +1 -0
- package/dist/admin/chunks/fr-BDNWCNs0.js +51 -0
- package/dist/admin/chunks/fr-BDNWCNs0.js.map +1 -0
- package/dist/admin/chunks/fr-CGYvGUXg.mjs +49 -0
- package/dist/admin/chunks/fr-CGYvGUXg.mjs.map +1 -0
- package/dist/admin/chunks/id-CNzbwFjA.mjs +61 -0
- package/dist/admin/chunks/id-CNzbwFjA.mjs.map +1 -0
- package/dist/admin/chunks/id-UqUPykHZ.js +63 -0
- package/dist/admin/chunks/id-UqUPykHZ.js.map +1 -0
- package/dist/admin/chunks/index-B-Z_z_qb.mjs +213 -0
- package/dist/admin/chunks/index-B-Z_z_qb.mjs.map +1 -0
- package/dist/admin/chunks/index-B2MJiSOD.mjs +279 -0
- package/dist/admin/chunks/index-B2MJiSOD.mjs.map +1 -0
- package/dist/admin/chunks/index-BPiDUOGt.js +471 -0
- package/dist/admin/chunks/index-BPiDUOGt.js.map +1 -0
- package/dist/admin/chunks/index-BtYUb_br.js +741 -0
- package/dist/admin/chunks/index-BtYUb_br.js.map +1 -0
- package/dist/admin/chunks/index-COXjHxFm.mjs +718 -0
- package/dist/admin/chunks/index-COXjHxFm.mjs.map +1 -0
- package/dist/admin/chunks/index-CkYplz_3.js +301 -0
- package/dist/admin/chunks/index-CkYplz_3.js.map +1 -0
- package/dist/admin/chunks/index-Cu2GvTiT.mjs +1516 -0
- package/dist/admin/chunks/index-Cu2GvTiT.mjs.map +1 -0
- package/dist/admin/chunks/index-D01zzG9y.js +1537 -0
- package/dist/admin/chunks/index-D01zzG9y.js.map +1 -0
- package/dist/admin/chunks/index-DAclA-0k.js +217 -0
- package/dist/admin/chunks/index-DAclA-0k.js.map +1 -0
- package/dist/admin/chunks/index-DVNIct2-.mjs +448 -0
- package/dist/admin/chunks/index-DVNIct2-.mjs.map +1 -0
- package/dist/admin/chunks/it-B2H2foTf.mjs +61 -0
- package/dist/admin/chunks/it-B2H2foTf.mjs.map +1 -0
- package/dist/admin/chunks/it-D5VuyoLU.js +63 -0
- package/dist/admin/chunks/it-D5VuyoLU.js.map +1 -0
- package/dist/admin/chunks/ja-C0z9d7L9.mjs +47 -0
- package/dist/admin/chunks/ja-C0z9d7L9.mjs.map +1 -0
- package/dist/admin/chunks/ja-MpqVsCgs.js +49 -0
- package/dist/admin/chunks/ja-MpqVsCgs.js.map +1 -0
- package/dist/admin/chunks/ko-Bm-grPSc.js +87 -0
- package/dist/admin/chunks/ko-Bm-grPSc.js.map +1 -0
- package/dist/admin/chunks/ko-CzUgzpeS.mjs +85 -0
- package/dist/admin/chunks/ko-CzUgzpeS.mjs.map +1 -0
- package/dist/admin/chunks/ms-CCacxjim.mjs +48 -0
- package/dist/admin/chunks/ms-CCacxjim.mjs.map +1 -0
- package/dist/admin/chunks/ms-D7eyBD5H.js +50 -0
- package/dist/admin/chunks/ms-D7eyBD5H.js.map +1 -0
- package/dist/admin/chunks/nl-BIOwAQtI.js +49 -0
- package/dist/admin/chunks/nl-BIOwAQtI.js.map +1 -0
- package/dist/admin/chunks/nl-DDC3nZW-.mjs +47 -0
- package/dist/admin/chunks/nl-DDC3nZW-.mjs.map +1 -0
- package/dist/admin/chunks/pl-D5BeNrg_.js +87 -0
- package/dist/admin/chunks/pl-D5BeNrg_.js.map +1 -0
- package/dist/admin/chunks/pl-XkS463rN.mjs +85 -0
- package/dist/admin/chunks/pl-XkS463rN.mjs.map +1 -0
- package/dist/admin/chunks/pt-BR-8cC7z8Km.mjs +43 -0
- package/dist/admin/chunks/pt-BR-8cC7z8Km.mjs.map +1 -0
- package/dist/admin/chunks/pt-BR-DxPBzQGx.js +45 -0
- package/dist/admin/chunks/pt-BR-DxPBzQGx.js.map +1 -0
- package/dist/admin/chunks/pt-DQpEvio8.mjs +47 -0
- package/dist/admin/chunks/pt-DQpEvio8.mjs.map +1 -0
- package/dist/admin/chunks/pt-kkCwzNvH.js +49 -0
- package/dist/admin/chunks/pt-kkCwzNvH.js.map +1 -0
- package/dist/admin/chunks/ru-BQ0gHmp3.js +87 -0
- package/dist/admin/chunks/ru-BQ0gHmp3.js.map +1 -0
- package/dist/admin/chunks/ru-nzL_7Mhg.mjs +85 -0
- package/dist/admin/chunks/ru-nzL_7Mhg.mjs.map +1 -0
- package/dist/admin/chunks/sk-Ddxc_tZA.mjs +49 -0
- package/dist/admin/chunks/sk-Ddxc_tZA.mjs.map +1 -0
- package/dist/admin/chunks/sk-nVwAPdYC.js +51 -0
- package/dist/admin/chunks/sk-nVwAPdYC.js.map +1 -0
- package/dist/admin/chunks/sv-BDfk2A-F.js +87 -0
- package/dist/admin/chunks/sv-BDfk2A-F.js.map +1 -0
- package/dist/admin/chunks/sv-By3RYpMG.mjs +85 -0
- package/dist/admin/chunks/sv-By3RYpMG.mjs.map +1 -0
- package/dist/admin/chunks/th-BtTtpHe2.js +61 -0
- package/dist/admin/chunks/th-BtTtpHe2.js.map +1 -0
- package/dist/admin/chunks/th-COl50vqb.mjs +59 -0
- package/dist/admin/chunks/th-COl50vqb.mjs.map +1 -0
- package/dist/admin/chunks/tr-80SJU6jg.mjs +84 -0
- package/dist/admin/chunks/tr-80SJU6jg.mjs.map +1 -0
- package/dist/admin/chunks/tr-Di-Nf7cT.js +86 -0
- package/dist/admin/chunks/tr-Di-Nf7cT.js.map +1 -0
- package/dist/admin/chunks/uk-CggQOx1l.js +50 -0
- package/dist/admin/chunks/uk-CggQOx1l.js.map +1 -0
- package/dist/admin/chunks/uk-D8JHuzch.mjs +48 -0
- package/dist/admin/chunks/uk-D8JHuzch.mjs.map +1 -0
- package/dist/admin/chunks/vi-69AF03Iv.mjs +49 -0
- package/dist/admin/chunks/vi-69AF03Iv.mjs.map +1 -0
- package/dist/admin/chunks/vi-D9cCsHsU.js +51 -0
- package/dist/admin/chunks/vi-D9cCsHsU.js.map +1 -0
- package/dist/admin/chunks/zh-BzSkqxo-.mjs +85 -0
- package/dist/admin/chunks/zh-BzSkqxo-.mjs.map +1 -0
- package/dist/admin/chunks/zh-BzWgJEzz.js +87 -0
- package/dist/admin/chunks/zh-BzWgJEzz.js.map +1 -0
- package/dist/admin/chunks/zh-Hans-CKqQbpsM.js +87 -0
- package/dist/admin/chunks/zh-Hans-CKqQbpsM.js.map +1 -0
- package/dist/admin/chunks/zh-Hans-DmDcSsp7.mjs +85 -0
- package/dist/admin/chunks/zh-Hans-DmDcSsp7.mjs.map +1 -0
- package/dist/admin/index.js +6 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -4
- package/dist/admin/index.mjs.map +1 -1
- package/dist/server/index.js +4739 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/index.mjs +4737 -0
- package/dist/server/index.mjs.map +1 -0
- package/package.json +11 -10
- package/rollup.config.mjs +52 -0
- package/server/register.js +1 -1
- package/dist/_chunks/ar-BguGUqwK.js +0 -44
- package/dist/_chunks/ar-BguGUqwK.js.map +0 -1
- package/dist/_chunks/ar-CK8BRRXB.mjs +0 -44
- package/dist/_chunks/ar-CK8BRRXB.mjs.map +0 -1
- package/dist/_chunks/cs-BVigMk0l.mjs +0 -50
- package/dist/_chunks/cs-BVigMk0l.mjs.map +0 -1
- package/dist/_chunks/cs-BW8-K_GY.js +0 -50
- package/dist/_chunks/cs-BW8-K_GY.js.map +0 -1
- package/dist/_chunks/de-BKUdRFI4.mjs +0 -62
- package/dist/_chunks/de-BKUdRFI4.mjs.map +0 -1
- package/dist/_chunks/de-owXpVluI.js +0 -62
- package/dist/_chunks/de-owXpVluI.js.map +0 -1
- package/dist/_chunks/dk-BQiTK50l.mjs +0 -86
- package/dist/_chunks/dk-BQiTK50l.mjs.map +0 -1
- package/dist/_chunks/dk-LXAnbuBk.js +0 -86
- package/dist/_chunks/dk-LXAnbuBk.js.map +0 -1
- package/dist/_chunks/en-DOHtPf-2.mjs +0 -86
- package/dist/_chunks/en-DOHtPf-2.mjs.map +0 -1
- package/dist/_chunks/en-MHo5mcsU.js +0 -86
- package/dist/_chunks/en-MHo5mcsU.js.map +0 -1
- package/dist/_chunks/es-BwLCLXAQ.js +0 -86
- package/dist/_chunks/es-BwLCLXAQ.js.map +0 -1
- package/dist/_chunks/es-DNgOVMjD.mjs +0 -86
- package/dist/_chunks/es-DNgOVMjD.mjs.map +0 -1
- package/dist/_chunks/fr-DkgRugiU.mjs +0 -50
- package/dist/_chunks/fr-DkgRugiU.mjs.map +0 -1
- package/dist/_chunks/fr-DkhpSjjm.js +0 -50
- package/dist/_chunks/fr-DkhpSjjm.js.map +0 -1
- package/dist/_chunks/id-BTemOeTZ.js +0 -62
- package/dist/_chunks/id-BTemOeTZ.js.map +0 -1
- package/dist/_chunks/id-BdEsvnaF.mjs +0 -62
- package/dist/_chunks/id-BdEsvnaF.mjs.map +0 -1
- package/dist/_chunks/index-BCw6zVHf.mjs +0 -344
- package/dist/_chunks/index-BCw6zVHf.mjs.map +0 -1
- package/dist/_chunks/index-BSJxpmc1-C5aV1Jb8.js +0 -11116
- package/dist/_chunks/index-BSJxpmc1-C5aV1Jb8.js.map +0 -1
- package/dist/_chunks/index-BSJxpmc1-Cmh4INWh.mjs +0 -11093
- package/dist/_chunks/index-BSJxpmc1-Cmh4INWh.mjs.map +0 -1
- package/dist/_chunks/index-BdOumcDH.mjs +0 -262
- package/dist/_chunks/index-BdOumcDH.mjs.map +0 -1
- package/dist/_chunks/index-BifzOY9J.mjs +0 -1142
- package/dist/_chunks/index-BifzOY9J.mjs.map +0 -1
- package/dist/_chunks/index-Bk3q4O8M.js +0 -639
- package/dist/_chunks/index-Bk3q4O8M.js.map +0 -1
- package/dist/_chunks/index-Bl-UGfZ4.js +0 -365
- package/dist/_chunks/index-Bl-UGfZ4.js.map +0 -1
- package/dist/_chunks/index-BpBvwD7E.mjs +0 -617
- package/dist/_chunks/index-BpBvwD7E.mjs.map +0 -1
- package/dist/_chunks/index-CsepshPM.mjs +0 -253
- package/dist/_chunks/index-CsepshPM.mjs.map +0 -1
- package/dist/_chunks/index-DYLqtX6g.js +0 -1171
- package/dist/_chunks/index-DYLqtX6g.js.map +0 -1
- package/dist/_chunks/index-mrTAEHgX.js +0 -252
- package/dist/_chunks/index-mrTAEHgX.js.map +0 -1
- package/dist/_chunks/index-s_b84GLl.js +0 -280
- package/dist/_chunks/index-s_b84GLl.js.map +0 -1
- package/dist/_chunks/it-B-rv0E24.mjs +0 -62
- package/dist/_chunks/it-B-rv0E24.mjs.map +0 -1
- package/dist/_chunks/it-D1rH6V6_.js +0 -62
- package/dist/_chunks/it-D1rH6V6_.js.map +0 -1
- package/dist/_chunks/ja-C8K-VBPD.mjs +0 -48
- package/dist/_chunks/ja-C8K-VBPD.mjs.map +0 -1
- package/dist/_chunks/ja-DqShgTMf.js +0 -48
- package/dist/_chunks/ja-DqShgTMf.js.map +0 -1
- package/dist/_chunks/ko-B9DGEPWH.js +0 -86
- package/dist/_chunks/ko-B9DGEPWH.js.map +0 -1
- package/dist/_chunks/ko-Busb0wIY.mjs +0 -86
- package/dist/_chunks/ko-Busb0wIY.mjs.map +0 -1
- package/dist/_chunks/ms-ByvsQjRt.mjs +0 -49
- package/dist/_chunks/ms-ByvsQjRt.mjs.map +0 -1
- package/dist/_chunks/ms-CPBU3LWf.js +0 -49
- package/dist/_chunks/ms-CPBU3LWf.js.map +0 -1
- package/dist/_chunks/nl-5qO8Rpcy.mjs +0 -48
- package/dist/_chunks/nl-5qO8Rpcy.mjs.map +0 -1
- package/dist/_chunks/nl-CwNB6YoO.js +0 -48
- package/dist/_chunks/nl-CwNB6YoO.js.map +0 -1
- package/dist/_chunks/pl-BdIzifBE.mjs +0 -86
- package/dist/_chunks/pl-BdIzifBE.mjs.map +0 -1
- package/dist/_chunks/pl-Do9UD69f.js +0 -86
- package/dist/_chunks/pl-Do9UD69f.js.map +0 -1
- package/dist/_chunks/pt-BIO24ioG.mjs +0 -48
- package/dist/_chunks/pt-BIO24ioG.mjs.map +0 -1
- package/dist/_chunks/pt-BR-D7dZhxuP.js +0 -44
- package/dist/_chunks/pt-BR-D7dZhxuP.js.map +0 -1
- package/dist/_chunks/pt-BR-f0p23AQZ.mjs +0 -44
- package/dist/_chunks/pt-BR-f0p23AQZ.mjs.map +0 -1
- package/dist/_chunks/pt-fdvyOnUp.js +0 -48
- package/dist/_chunks/pt-fdvyOnUp.js.map +0 -1
- package/dist/_chunks/ru-C94rjPGA.js +0 -86
- package/dist/_chunks/ru-C94rjPGA.js.map +0 -1
- package/dist/_chunks/ru-VWy-IB7K.mjs +0 -86
- package/dist/_chunks/ru-VWy-IB7K.mjs.map +0 -1
- package/dist/_chunks/sk-BABEhykl.js +0 -50
- package/dist/_chunks/sk-BABEhykl.js.map +0 -1
- package/dist/_chunks/sk-B_LIcepm.mjs +0 -50
- package/dist/_chunks/sk-B_LIcepm.mjs.map +0 -1
- package/dist/_chunks/sv-ABLKOokl.mjs +0 -86
- package/dist/_chunks/sv-ABLKOokl.mjs.map +0 -1
- package/dist/_chunks/sv-Be43LhA9.js +0 -86
- package/dist/_chunks/sv-Be43LhA9.js.map +0 -1
- package/dist/_chunks/th-DKyP7ueR.mjs +0 -60
- package/dist/_chunks/th-DKyP7ueR.mjs.map +0 -1
- package/dist/_chunks/th-DgVhVLhL.js +0 -60
- package/dist/_chunks/th-DgVhVLhL.js.map +0 -1
- package/dist/_chunks/tr-B_idhkEs.js +0 -85
- package/dist/_chunks/tr-B_idhkEs.js.map +0 -1
- package/dist/_chunks/tr-qa1Q5UjC.mjs +0 -85
- package/dist/_chunks/tr-qa1Q5UjC.mjs.map +0 -1
- package/dist/_chunks/uk-BmRqbeQc.mjs +0 -49
- package/dist/_chunks/uk-BmRqbeQc.mjs.map +0 -1
- package/dist/_chunks/uk-LHOivnhP.js +0 -49
- package/dist/_chunks/uk-LHOivnhP.js.map +0 -1
- package/dist/_chunks/vi-CdVRdKDw.js +0 -50
- package/dist/_chunks/vi-CdVRdKDw.js.map +0 -1
- package/dist/_chunks/vi-HW-EdMea.mjs +0 -50
- package/dist/_chunks/vi-HW-EdMea.mjs.map +0 -1
- package/dist/_chunks/zh-5hKkVPA4.mjs +0 -86
- package/dist/_chunks/zh-5hKkVPA4.mjs.map +0 -1
- package/dist/_chunks/zh-Cuq8gMnF.js +0 -86
- package/dist/_chunks/zh-Cuq8gMnF.js.map +0 -1
- package/dist/_chunks/zh-Hans-BHilK-yc.mjs +0 -86
- package/dist/_chunks/zh-Hans-BHilK-yc.mjs.map +0 -1
- package/dist/_chunks/zh-Hans-GQDMKtY4.js +0 -86
- package/dist/_chunks/zh-Hans-GQDMKtY4.js.map +0 -1
- package/packup.config.ts +0 -22
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js","../../server/utils/sanitize/visitors/index.js","../../server/utils/sanitize/sanitizers.js","../../server/utils/sanitize/index.js","../../server/utils/index.js","../../server/strategies/users-permissions.js","../../server/graphql/types/me.js","../../server/graphql/types/me-role.js","../../server/graphql/types/register-input.js","../../server/graphql/types/login-input.js","../../server/graphql/types/password-payload.js","../../server/graphql/types/login-payload.js","../../server/graphql/types/create-role-payload.js","../../server/graphql/types/update-role-payload.js","../../server/graphql/types/delete-role-payload.js","../../server/graphql/types/user-input.js","../../server/graphql/types/index.js","../../server/graphql/queries/me.js","../../server/graphql/queries/index.js","../../server/graphql/mutations/crud/role/create-role.js","../../server/graphql/mutations/crud/role/update-role.js","../../server/graphql/mutations/crud/role/delete-role.js","../../server/graphql/utils.js","../../server/graphql/mutations/crud/user/create-user.js","../../server/graphql/mutations/crud/user/update-user.js","../../server/graphql/mutations/crud/user/delete-user.js","../../server/graphql/mutations/auth/login.js","../../server/graphql/mutations/auth/register.js","../../server/graphql/mutations/auth/forgot-password.js","../../server/graphql/mutations/auth/reset-password.js","../../server/graphql/mutations/auth/change-password.js","../../server/graphql/mutations/auth/email-confirmation.js","../../server/graphql/mutations/index.js","../../server/graphql/resolvers-configs.js","../../server/graphql/index.js","../../server/register.js","../../server/bootstrap/users-permissions-actions.js","../../server/bootstrap/index.js","../../server/content-types/permission/index.js","../../server/content-types/role/index.js","../../server/content-types/user/schema-config.js","../../server/content-types/user/index.js","../../server/content-types/index.js","../../server/middlewares/rateLimit.js","../../server/middlewares/index.js","../../server/services/jwt.js","../../server/services/providers.js","../../server/services/user.js","../../server/services/role.js","../../server/services/users-permissions.js","../../server/services/providers-registry.js","../../server/services/permission.js","../../server/services/index.js","../../server/routes/admin/permissions.js","../../server/routes/admin/settings.js","../../server/routes/admin/role.js","../../server/routes/admin/index.js","../../server/routes/content-api/auth.js","../../server/routes/content-api/user.js","../../server/routes/content-api/role.js","../../server/routes/content-api/permissions.js","../../server/routes/content-api/index.js","../../server/routes/index.js","../../server/controllers/validation/auth.js","../../server/controllers/auth.js","../../server/controllers/validation/user.js","../../server/controllers/user.js","../../server/controllers/role.js","../../server/controllers/permissions.js","../../server/controllers/validation/email-template.js","../../server/controllers/settings.js","../../server/controllers/content-manager-user.js","../../server/controllers/index.js","../../server/config.js","../../server/index.js","../../server/index.js?commonjs-entry"],"sourcesContent":["'use strict';\n\nmodule.exports = ({ schema, key, attribute }, { remove }) => {\n if (\n attribute?.type === 'relation' &&\n attribute?.target === 'plugin::users-permissions.user' &&\n schema.uid === 'plugin::users-permissions.role'\n ) {\n remove(key);\n }\n};\n","'use strict';\n\nmodule.exports = {\n removeUserRelationFromRoleEntities: require('./remove-user-relation-from-role-entities'),\n};\n","'use strict';\n\nconst { curry } = require('lodash/fp');\nconst { traverseEntity, async } = require('@strapi/utils');\n\nconst { removeUserRelationFromRoleEntities } = require('./visitors');\n\nconst sanitizeUserRelationFromRoleEntities = curry((schema, entity) => {\n return traverseEntity(\n removeUserRelationFromRoleEntities,\n { schema, getModel: strapi.getModel.bind(strapi) },\n entity\n );\n});\n\nconst defaultSanitizeOutput = curry((schema, entity) => {\n return async.pipe(sanitizeUserRelationFromRoleEntities(schema))(entity);\n});\n\nmodule.exports = {\n sanitizeUserRelationFromRoleEntities,\n defaultSanitizeOutput,\n};\n","'use strict';\n\nconst visitors = require('./visitors');\nconst sanitizers = require('./sanitizers');\n\nmodule.exports = {\n sanitizers,\n visitors,\n};\n","'use strict';\n\nconst sanitize = require('./sanitize');\n\nconst getService = (name) => {\n return strapi.plugin('users-permissions').service(name);\n};\n\nmodule.exports = {\n getService,\n sanitize,\n};\n","'use strict';\n\nconst { castArray, map, every, pipe } = require('lodash/fp');\nconst { ForbiddenError, UnauthorizedError } = require('@strapi/utils').errors;\n\nconst { getService } = require('../utils');\n\nconst getAdvancedSettings = () => {\n return strapi.store({ type: 'plugin', name: 'users-permissions' }).get({ key: 'advanced' });\n};\n\nconst authenticate = async (ctx) => {\n try {\n const token = await getService('jwt').getToken(ctx);\n\n if (token) {\n const { id } = token;\n\n // Invalid token\n if (id === undefined) {\n return { authenticated: false };\n }\n\n const user = await getService('user').fetchAuthenticatedUser(id);\n\n // No user associated to the token\n if (!user) {\n return { error: 'Invalid credentials' };\n }\n\n const advancedSettings = await getAdvancedSettings();\n\n // User not confirmed\n if (advancedSettings.email_confirmation && !user.confirmed) {\n return { error: 'Invalid credentials' };\n }\n\n // User blocked\n if (user.blocked) {\n return { error: 'Invalid credentials' };\n }\n\n // Fetch user's permissions\n const permissions = await Promise.resolve(user.role.id)\n .then(getService('permission').findRolePermissions)\n .then(map(getService('permission').toContentAPIPermission));\n\n // Generate an ability (content API engine) based on the given permissions\n const ability = await strapi.contentAPI.permissions.engine.generateAbility(permissions);\n\n ctx.state.user = user;\n\n return {\n authenticated: true,\n credentials: user,\n ability,\n };\n }\n\n const publicPermissions = await getService('permission')\n .findPublicPermissions()\n .then(map(getService('permission').toContentAPIPermission));\n\n if (publicPermissions.length === 0) {\n return { authenticated: false };\n }\n\n const ability = await strapi.contentAPI.permissions.engine.generateAbility(publicPermissions);\n\n return {\n authenticated: true,\n credentials: null,\n ability,\n };\n } catch (err) {\n return { authenticated: false };\n }\n};\n\nconst verify = async (auth, config) => {\n const { credentials: user, ability } = auth;\n\n if (!config.scope) {\n if (!user) {\n // A non authenticated user cannot access routes that do not have a scope\n throw new UnauthorizedError();\n } else {\n // An authenticated user can access non scoped routes\n return;\n }\n }\n\n // If no ability have been generated, then consider auth is missing\n if (!ability) {\n throw new UnauthorizedError();\n }\n\n const isAllowed = pipe(\n // Make sure we're dealing with an array\n castArray,\n // Transform the scope array into an action array\n every((scope) => ability.can(scope))\n )(config.scope);\n\n if (!isAllowed) {\n throw new ForbiddenError();\n }\n};\n\nmodule.exports = {\n name: 'users-permissions',\n authenticate,\n verify,\n};\n","'use strict';\n\nmodule.exports = ({ nexus }) => {\n return nexus.objectType({\n name: 'UsersPermissionsMe',\n\n definition(t) {\n t.nonNull.id('id');\n t.nonNull.id('documentId');\n t.nonNull.string('username');\n t.string('email');\n t.boolean('confirmed');\n t.boolean('blocked');\n t.field('role', { type: 'UsersPermissionsMeRole' });\n },\n });\n};\n","'use strict';\n\nmodule.exports = ({ nexus }) => {\n return nexus.objectType({\n name: 'UsersPermissionsMeRole',\n\n definition(t) {\n t.nonNull.id('id');\n t.nonNull.string('name');\n t.string('description');\n t.string('type');\n },\n });\n};\n","'use strict';\n\nmodule.exports = ({ nexus }) => {\n return nexus.inputObjectType({\n name: 'UsersPermissionsRegisterInput',\n\n definition(t) {\n t.nonNull.string('username');\n t.nonNull.string('email');\n t.nonNull.string('password');\n },\n });\n};\n","'use strict';\n\nmodule.exports = ({ nexus }) => {\n return nexus.inputObjectType({\n name: 'UsersPermissionsLoginInput',\n\n definition(t) {\n t.nonNull.string('identifier');\n t.nonNull.string('password');\n t.nonNull.string('provider', { default: 'local' });\n },\n });\n};\n","'use strict';\n\nmodule.exports = ({ nexus }) => {\n return nexus.objectType({\n name: 'UsersPermissionsPasswordPayload',\n\n definition(t) {\n t.nonNull.boolean('ok');\n },\n });\n};\n","'use strict';\n\nmodule.exports = ({ nexus }) => {\n return nexus.objectType({\n name: 'UsersPermissionsLoginPayload',\n\n definition(t) {\n t.string('jwt');\n t.nonNull.field('user', { type: 'UsersPermissionsMe' });\n },\n });\n};\n","'use strict';\n\nmodule.exports = ({ nexus }) => {\n return nexus.objectType({\n name: 'UsersPermissionsCreateRolePayload',\n\n definition(t) {\n t.nonNull.boolean('ok');\n },\n });\n};\n","'use strict';\n\nmodule.exports = ({ nexus }) => {\n return nexus.objectType({\n name: 'UsersPermissionsUpdateRolePayload',\n\n definition(t) {\n t.nonNull.boolean('ok');\n },\n });\n};\n","'use strict';\n\nmodule.exports = ({ nexus }) => {\n return nexus.objectType({\n name: 'UsersPermissionsDeleteRolePayload',\n\n definition(t) {\n t.nonNull.boolean('ok');\n },\n });\n};\n","'use strict';\n\nconst usersPermissionsUserUID = 'plugin::users-permissions.user';\n\nmodule.exports = ({ nexus, strapi }) => {\n const { getContentTypeInputName } = strapi.plugin('graphql').service('utils').naming;\n\n const userContentType = strapi.getModel(usersPermissionsUserUID);\n const userInputName = getContentTypeInputName(userContentType);\n\n return nexus.extendInputType({\n type: userInputName,\n\n definition(t) {\n // Manually add the private password field back to the data\n // input type as it is used for CRUD operations on users\n t.string('password');\n },\n });\n};\n","'use strict';\n\nconst typesFactories = [\n require('./me'),\n require('./me-role'),\n require('./register-input'),\n require('./login-input'),\n require('./password-payload'),\n require('./login-payload'),\n require('./create-role-payload'),\n require('./update-role-payload'),\n require('./delete-role-payload'),\n require('./user-input'),\n];\n\n/**\n * @param {object} context\n * @param {object} context.nexus\n * @param {object} context.strapi\n * @return {any[]}\n */\nmodule.exports = (context) => typesFactories.map((factory) => factory(context));\n","'use strict';\n\nmodule.exports = () => ({\n type: 'UsersPermissionsMe',\n\n args: {},\n\n resolve(parent, args, context) {\n const { user } = context.state;\n\n if (!user) {\n throw new Error('Authentication requested');\n }\n\n return user;\n },\n});\n","'use strict';\n\nconst me = require('./me');\n\nmodule.exports = ({ nexus }) => {\n return nexus.extendType({\n type: 'Query',\n\n definition(t) {\n t.field('me', me({ nexus }));\n },\n });\n};\n","'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst usersPermissionsRoleUID = 'plugin::users-permissions.role';\n\nmodule.exports = ({ nexus, strapi }) => {\n const { getContentTypeInputName } = strapi.plugin('graphql').service('utils').naming;\n const { nonNull } = nexus;\n\n const roleContentType = strapi.getModel(usersPermissionsRoleUID);\n\n const roleInputName = getContentTypeInputName(roleContentType);\n\n return {\n type: 'UsersPermissionsCreateRolePayload',\n\n args: {\n data: nonNull(roleInputName),\n },\n\n description: 'Create a new role',\n\n async resolve(parent, args, context) {\n const { koaContext } = context;\n\n koaContext.request.body = toPlainObject(args.data);\n\n await strapi.plugin('users-permissions').controller('role').createRole(koaContext);\n\n return { ok: true };\n },\n };\n};\n","'use strict';\n\nconst usersPermissionsRoleUID = 'plugin::users-permissions.role';\n\nmodule.exports = ({ nexus, strapi }) => {\n const { getContentTypeInputName } = strapi.plugin('graphql').service('utils').naming;\n const { nonNull } = nexus;\n\n const roleContentType = strapi.getModel(usersPermissionsRoleUID);\n\n const roleInputName = getContentTypeInputName(roleContentType);\n\n return {\n type: 'UsersPermissionsUpdateRolePayload',\n\n args: {\n id: nonNull('ID'),\n data: nonNull(roleInputName),\n },\n\n description: 'Update an existing role',\n\n async resolve(parent, args, context) {\n const { koaContext } = context;\n\n koaContext.params = { role: args.id };\n koaContext.request.body = args.data;\n koaContext.request.body.role = args.id;\n\n await strapi.plugin('users-permissions').controller('role').updateRole(koaContext);\n\n return { ok: true };\n },\n };\n};\n","'use strict';\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n\n return {\n type: 'UsersPermissionsDeleteRolePayload',\n\n args: {\n id: nonNull('ID'),\n },\n\n description: 'Delete an existing role',\n\n async resolve(parent, args, context) {\n const { koaContext } = context;\n\n koaContext.params = { role: args.id };\n\n await strapi.plugin('users-permissions').controller('role').deleteRole(koaContext);\n\n return { ok: true };\n },\n };\n};\n","'use strict';\n\nconst { getOr } = require('lodash/fp');\n\n/**\n * Throws an ApolloError if context body contains a bad request\n * @param contextBody - body of the context object given to the resolver\n * @throws ApolloError if the body is a bad request\n */\nfunction checkBadRequest(contextBody) {\n const statusCode = getOr(200, 'statusCode', contextBody);\n\n if (statusCode !== 200) {\n const errorMessage = getOr('Bad Request', 'error', contextBody);\n\n const exception = new Error(errorMessage);\n\n exception.code = statusCode || 400;\n exception.data = contextBody;\n\n throw exception;\n }\n}\n\nmodule.exports = {\n checkBadRequest,\n};\n","'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../../utils');\n\nconst usersPermissionsUserUID = 'plugin::users-permissions.user';\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n const { getContentTypeInputName, getEntityResponseName } = strapi\n .plugin('graphql')\n .service('utils').naming;\n\n const userContentType = strapi.getModel(usersPermissionsUserUID);\n\n const userInputName = getContentTypeInputName(userContentType);\n const responseName = getEntityResponseName(userContentType);\n\n return {\n type: nonNull(responseName),\n\n args: {\n data: nonNull(userInputName),\n },\n\n description: 'Create a new user',\n\n async resolve(parent, args, context) {\n const { koaContext } = context;\n\n koaContext.params = {};\n koaContext.request.body = toPlainObject(args.data);\n\n await strapi.plugin('users-permissions').controller('user').create(koaContext);\n\n checkBadRequest(koaContext.body);\n\n return {\n value: koaContext.body,\n info: { args, resourceUID: 'plugin::users-permissions.user' },\n };\n },\n };\n};\n","'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../../utils');\n\nconst usersPermissionsUserUID = 'plugin::users-permissions.user';\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n const { getContentTypeInputName, getEntityResponseName } = strapi\n .plugin('graphql')\n .service('utils').naming;\n\n const userContentType = strapi.getModel(usersPermissionsUserUID);\n\n const userInputName = getContentTypeInputName(userContentType);\n const responseName = getEntityResponseName(userContentType);\n\n return {\n type: nonNull(responseName),\n\n args: {\n id: nonNull('ID'),\n data: nonNull(userInputName),\n },\n\n description: 'Update an existing user',\n\n async resolve(parent, args, context) {\n const { koaContext } = context;\n\n koaContext.params = { id: args.id };\n koaContext.request.body = toPlainObject(args.data);\n\n await strapi.plugin('users-permissions').controller('user').update(koaContext);\n\n checkBadRequest(koaContext.body);\n\n return {\n value: koaContext.body,\n info: { args, resourceUID: 'plugin::users-permissions.user' },\n };\n },\n };\n};\n","'use strict';\n\nconst { checkBadRequest } = require('../../../utils');\n\nconst usersPermissionsUserUID = 'plugin::users-permissions.user';\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n const { getEntityResponseName } = strapi.plugin('graphql').service('utils').naming;\n\n const userContentType = strapi.getModel(usersPermissionsUserUID);\n\n const responseName = getEntityResponseName(userContentType);\n\n return {\n type: nonNull(responseName),\n\n args: {\n id: nonNull('ID'),\n },\n\n description: 'Delete an existing user',\n\n async resolve(parent, args, context) {\n const { koaContext } = context;\n\n koaContext.params = { id: args.id };\n\n await strapi.plugin('users-permissions').controller('user').destroy(koaContext);\n\n checkBadRequest(koaContext.body);\n\n return {\n value: koaContext.body,\n info: { args, resourceUID: 'plugin::users-permissions.user' },\n };\n },\n };\n};\n","'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../utils');\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n\n return {\n type: nonNull('UsersPermissionsLoginPayload'),\n\n args: {\n input: nonNull('UsersPermissionsLoginInput'),\n },\n\n async resolve(parent, args, context) {\n const { koaContext } = context;\n\n koaContext.params = { provider: args.input.provider };\n koaContext.request.body = toPlainObject(args.input);\n\n await strapi.plugin('users-permissions').controller('auth').callback(koaContext);\n\n const output = koaContext.body;\n\n checkBadRequest(output);\n\n return {\n user: output.user || output,\n jwt: output.jwt,\n };\n },\n };\n};\n","'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../utils');\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n\n return {\n type: nonNull('UsersPermissionsLoginPayload'),\n\n args: {\n input: nonNull('UsersPermissionsRegisterInput'),\n },\n\n description: 'Register a user',\n\n async resolve(parent, args, context) {\n const { koaContext } = context;\n\n koaContext.request.body = toPlainObject(args.input);\n\n await strapi.plugin('users-permissions').controller('auth').register(koaContext);\n\n const output = koaContext.body;\n\n checkBadRequest(output);\n\n return {\n user: output.user || output,\n jwt: output.jwt,\n };\n },\n };\n};\n","'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../utils');\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n\n return {\n type: 'UsersPermissionsPasswordPayload',\n\n args: {\n email: nonNull('String'),\n },\n\n description: 'Request a reset password token',\n\n async resolve(parent, args, context) {\n const { koaContext } = context;\n\n koaContext.request.body = toPlainObject(args);\n\n await strapi.plugin('users-permissions').controller('auth').forgotPassword(koaContext);\n\n const output = koaContext.body;\n\n checkBadRequest(output);\n\n return {\n ok: output.ok || output,\n };\n },\n };\n};\n","'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../utils');\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n\n return {\n type: 'UsersPermissionsLoginPayload',\n\n args: {\n password: nonNull('String'),\n passwordConfirmation: nonNull('String'),\n code: nonNull('String'),\n },\n\n description: 'Reset user password. Confirm with a code (resetToken from forgotPassword)',\n\n async resolve(parent, args, context) {\n const { koaContext } = context;\n\n koaContext.request.body = toPlainObject(args);\n\n await strapi.plugin('users-permissions').controller('auth').resetPassword(koaContext);\n\n const output = koaContext.body;\n\n checkBadRequest(output);\n\n return {\n user: output.user || output,\n jwt: output.jwt,\n };\n },\n };\n};\n","'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../utils');\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n\n return {\n type: 'UsersPermissionsLoginPayload',\n\n args: {\n currentPassword: nonNull('String'),\n password: nonNull('String'),\n passwordConfirmation: nonNull('String'),\n },\n\n description: 'Change user password. Confirm with the current password.',\n\n async resolve(parent, args, context) {\n const { koaContext } = context;\n\n koaContext.request.body = toPlainObject(args);\n\n await strapi.plugin('users-permissions').controller('auth').changePassword(koaContext);\n\n const output = koaContext.body;\n\n checkBadRequest(output);\n\n return {\n user: output.user || output,\n jwt: output.jwt,\n };\n },\n };\n};\n","'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../utils');\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n\n return {\n type: 'UsersPermissionsLoginPayload',\n\n args: {\n confirmation: nonNull('String'),\n },\n\n description: 'Confirm an email users email address',\n\n async resolve(parent, args, context) {\n const { koaContext } = context;\n\n koaContext.query = toPlainObject(args);\n\n await strapi\n .plugin('users-permissions')\n .controller('auth')\n .emailConfirmation(koaContext, null, true);\n\n const output = koaContext.body;\n\n checkBadRequest(output);\n\n return {\n user: output.user || output,\n jwt: output.jwt,\n };\n },\n };\n};\n","'use strict';\n\nconst userUID = 'plugin::users-permissions.user';\nconst roleUID = 'plugin::users-permissions.role';\n\nmodule.exports = (context) => {\n const { nexus, strapi } = context;\n\n const { naming } = strapi.plugin('graphql').service('utils');\n\n const user = strapi.getModel(userUID);\n const role = strapi.getModel(roleUID);\n\n const mutations = {\n // CRUD (user & role)\n [naming.getCreateMutationTypeName(role)]: require('./crud/role/create-role'),\n [naming.getUpdateMutationTypeName(role)]: require('./crud/role/update-role'),\n [naming.getDeleteMutationTypeName(role)]: require('./crud/role/delete-role'),\n [naming.getCreateMutationTypeName(user)]: require('./crud/user/create-user'),\n [naming.getUpdateMutationTypeName(user)]: require('./crud/user/update-user'),\n [naming.getDeleteMutationTypeName(user)]: require('./crud/user/delete-user'),\n\n // Other mutations\n login: require('./auth/login'),\n register: require('./auth/register'),\n forgotPassword: require('./auth/forgot-password'),\n resetPassword: require('./auth/reset-password'),\n changePassword: require('./auth/change-password'),\n emailConfirmation: require('./auth/email-confirmation'),\n };\n\n return nexus.extendType({\n type: 'Mutation',\n\n definition(t) {\n for (const [name, getConfig] of Object.entries(mutations)) {\n const config = getConfig(context);\n\n t.field(name, config);\n }\n },\n });\n};\n","'use strict';\n\nconst userUID = 'plugin::users-permissions.user';\nconst roleUID = 'plugin::users-permissions.role';\n\nmodule.exports = ({ strapi }) => {\n const { naming } = strapi.plugin('graphql').service('utils');\n\n const user = strapi.getModel(userUID);\n const role = strapi.getModel(roleUID);\n\n const createRole = naming.getCreateMutationTypeName(role);\n const updateRole = naming.getUpdateMutationTypeName(role);\n const deleteRole = naming.getDeleteMutationTypeName(role);\n const createUser = naming.getCreateMutationTypeName(user);\n const updateUser = naming.getUpdateMutationTypeName(user);\n const deleteUser = naming.getDeleteMutationTypeName(user);\n\n return {\n // Disabled auth for some operations\n 'Mutation.login': { auth: false },\n 'Mutation.register': { auth: false },\n 'Mutation.forgotPassword': { auth: false },\n 'Mutation.resetPassword': { auth: false },\n 'Mutation.emailConfirmation': { auth: false },\n 'Mutation.changePassword': {\n auth: {\n scope: 'plugin::users-permissions.auth.changePassword',\n },\n },\n\n // Scoped auth for replaced CRUD operations\n // Role\n [`Mutation.${createRole}`]: { auth: { scope: [`${roleUID}.createRole`] } },\n [`Mutation.${updateRole}`]: { auth: { scope: [`${roleUID}.updateRole`] } },\n [`Mutation.${deleteRole}`]: { auth: { scope: [`${roleUID}.deleteRole`] } },\n // User\n [`Mutation.${createUser}`]: { auth: { scope: [`${userUID}.create`] } },\n [`Mutation.${updateUser}`]: { auth: { scope: [`${userUID}.update`] } },\n [`Mutation.${deleteUser}`]: { auth: { scope: [`${userUID}.destroy`] } },\n };\n};\n","'use strict';\n\nconst getTypes = require('./types');\nconst getQueries = require('./queries');\nconst getMutations = require('./mutations');\nconst getResolversConfig = require('./resolvers-configs');\n\nmodule.exports = ({ strapi }) => {\n const { config: graphQLConfig } = strapi.plugin('graphql');\n const extensionService = strapi.plugin('graphql').service('extension');\n\n const isShadowCRUDEnabled = graphQLConfig('shadowCRUD', true);\n\n if (!isShadowCRUDEnabled) {\n return;\n }\n\n // Disable Permissions queries & mutations but allow the\n // type to be used/selected in filters or nested resolvers\n extensionService\n .shadowCRUD('plugin::users-permissions.permission')\n .disableQueries()\n .disableMutations();\n\n // Disable User & Role's Create/Update/Delete actions so they can be replaced\n const actionsToDisable = ['create', 'update', 'delete'];\n\n extensionService.shadowCRUD('plugin::users-permissions.user').disableActions(actionsToDisable);\n extensionService.shadowCRUD('plugin::users-permissions.role').disableActions(actionsToDisable);\n\n // Register new types & resolvers config\n extensionService.use(({ nexus }) => {\n const types = getTypes({ strapi, nexus });\n const queries = getQueries({ strapi, nexus });\n const mutations = getMutations({ strapi, nexus });\n const resolversConfig = getResolversConfig({ strapi });\n\n return {\n types: [types, queries, mutations],\n\n resolversConfig,\n };\n });\n};\n","'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\n\nconst authStrategy = require('./strategies/users-permissions');\nconst sanitizers = require('./utils/sanitize/sanitizers');\n\nmodule.exports = ({ strapi }) => {\n strapi.get('auth').register('content-api', authStrategy);\n strapi.sanitizers.add('content-api.output', sanitizers.defaultSanitizeOutput);\n\n if (strapi.plugin('graphql')) {\n require('./graphql')({ strapi });\n }\n\n if (strapi.plugin('documentation')) {\n const specPath = path.join(__dirname, '../../documentation/content-api.yaml');\n const spec = fs.readFileSync(specPath, 'utf8');\n\n strapi\n .plugin('documentation')\n .service('override')\n .registerOverride(spec, {\n pluginOrigin: 'users-permissions',\n excludeFromGeneration: ['users-permissions'],\n });\n }\n};\n","'use strict';\n\nmodule.exports = {\n actions: [\n {\n // Roles\n section: 'plugins',\n displayName: 'Create',\n uid: 'roles.create',\n subCategory: 'roles',\n pluginName: 'users-permissions',\n },\n {\n section: 'plugins',\n displayName: 'Read',\n uid: 'roles.read',\n subCategory: 'roles',\n pluginName: 'users-permissions',\n aliases: [\n {\n actionId: 'plugin::content-manager.explorer.read',\n subjects: ['plugin::users-permissions.role'],\n },\n ],\n },\n {\n section: 'plugins',\n displayName: 'Update',\n uid: 'roles.update',\n subCategory: 'roles',\n pluginName: 'users-permissions',\n },\n {\n section: 'plugins',\n displayName: 'Delete',\n uid: 'roles.delete',\n subCategory: 'roles',\n pluginName: 'users-permissions',\n },\n {\n // providers\n section: 'plugins',\n displayName: 'Read',\n uid: 'providers.read',\n subCategory: 'providers',\n pluginName: 'users-permissions',\n },\n {\n section: 'plugins',\n displayName: 'Edit',\n uid: 'providers.update',\n subCategory: 'providers',\n pluginName: 'users-permissions',\n },\n {\n // emailTemplates\n section: 'plugins',\n displayName: 'Read',\n uid: 'email-templates.read',\n subCategory: 'emailTemplates',\n pluginName: 'users-permissions',\n },\n {\n section: 'plugins',\n displayName: 'Edit',\n uid: 'email-templates.update',\n subCategory: 'emailTemplates',\n pluginName: 'users-permissions',\n },\n {\n // advancedSettings\n section: 'plugins',\n displayName: 'Read',\n uid: 'advanced-settings.read',\n subCategory: 'advancedSettings',\n pluginName: 'users-permissions',\n },\n {\n section: 'plugins',\n displayName: 'Edit',\n uid: 'advanced-settings.update',\n subCategory: 'advancedSettings',\n pluginName: 'users-permissions',\n },\n ],\n};\n","'use strict';\n\n/**\n * An asynchronous bootstrap function that runs before\n * your application gets started.\n *\n * This gives you an opportunity to set up your data model,\n * run jobs, or perform some special logic.\n */\nconst crypto = require('crypto');\nconst _ = require('lodash');\nconst { getService } = require('../utils');\nconst usersPermissionsActions = require('./users-permissions-actions');\n\nconst initGrant = async (pluginStore) => {\n const allProviders = getService('providers-registry').getAll();\n\n const grantConfig = Object.entries(allProviders).reduce((acc, [name, provider]) => {\n const { icon, enabled, grantConfig } = provider;\n\n acc[name] = {\n icon,\n enabled,\n ...grantConfig,\n };\n return acc;\n }, {});\n\n const prevGrantConfig = (await pluginStore.get({ key: 'grant' })) || {};\n\n if (!prevGrantConfig || !_.isEqual(prevGrantConfig, grantConfig)) {\n // merge with the previous provider config.\n _.keys(grantConfig).forEach((key) => {\n if (key in prevGrantConfig) {\n grantConfig[key] = _.merge(grantConfig[key], prevGrantConfig[key]);\n }\n });\n await pluginStore.set({ key: 'grant', value: grantConfig });\n }\n};\n\nconst initEmails = async (pluginStore) => {\n if (!(await pluginStore.get({ key: 'email' }))) {\n const value = {\n reset_password: {\n display: 'Email.template.reset_password',\n icon: 'sync',\n options: {\n from: {\n name: 'Administration Panel',\n email: 'no-reply@strapi.io',\n },\n response_email: '',\n object: 'Reset password',\n message: `<p>We heard that you lost your password. Sorry about that!</p>\n\n<p>But don’t worry! You can use the following link to reset your password:</p>\n<p><%= URL %>?code=<%= TOKEN %></p>\n\n<p>Thanks.</p>`,\n },\n },\n email_confirmation: {\n display: 'Email.template.email_confirmation',\n icon: 'check-square',\n options: {\n from: {\n name: 'Administration Panel',\n email: 'no-reply@strapi.io',\n },\n response_email: '',\n object: 'Account confirmation',\n message: `<p>Thank you for registering!</p>\n\n<p>You have to confirm your email address. Please click on the link below.</p>\n\n<p><%= URL %>?confirmation=<%= CODE %></p>\n\n<p>Thanks.</p>`,\n },\n },\n };\n\n await pluginStore.set({ key: 'email', value });\n }\n};\n\nconst initAdvancedOptions = async (pluginStore) => {\n if (!(await pluginStore.get({ key: 'advanced' }))) {\n const value = {\n unique_email: true,\n allow_register: true,\n email_confirmation: false,\n email_reset_password: null,\n email_confirmation_redirection: null,\n default_role: 'authenticated',\n };\n\n await pluginStore.set({ key: 'advanced', value });\n }\n};\n\nmodule.exports = async ({ strapi }) => {\n const pluginStore = strapi.store({ type: 'plugin', name: 'users-permissions' });\n\n await initGrant(pluginStore);\n await initEmails(pluginStore);\n await initAdvancedOptions(pluginStore);\n\n await strapi\n .service('admin::permission')\n .actionProvider.registerMany(usersPermissionsActions.actions);\n\n await getService('users-permissions').initialize();\n\n if (!strapi.config.get('plugin::users-permissions.jwtSecret')) {\n if (process.env.NODE_ENV !== 'development') {\n throw new Error(\n `Missing jwtSecret. Please, set configuration variable \"jwtSecret\" for the users-permissions plugin in config/plugins.js (ex: you can generate one using Node with \\`crypto.randomBytes(16).toString('base64')\\`).\nFor security reasons, prefer storing the secret in an environment variable and read it in config/plugins.js. See https://docs.strapi.io/developer-docs/latest/setup-deployment-guides/configurations/optional/environment.html#configuration-using-environment-variables.`\n );\n }\n\n const jwtSecret = crypto.randomBytes(16).toString('base64');\n\n strapi.config.set('plugin::users-permissions.jwtSecret', jwtSecret);\n\n if (!process.env.JWT_SECRET) {\n const envPath = process.env.ENV_PATH || '.env';\n strapi.fs.appendFile(envPath, `JWT_SECRET=${jwtSecret}\\n`);\n strapi.log.info(\n `The Users & Permissions plugin automatically generated a jwt secret and stored it in ${envPath} under the name JWT_SECRET.`\n );\n }\n }\n};\n","'use strict';\n\nmodule.exports = {\n collectionName: 'up_permissions',\n info: {\n name: 'permission',\n description: '',\n singularName: 'permission',\n pluralName: 'permissions',\n displayName: 'Permission',\n },\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n action: {\n type: 'string',\n required: true,\n configurable: false,\n },\n role: {\n type: 'relation',\n relation: 'manyToOne',\n target: 'plugin::users-permissions.role',\n inversedBy: 'permissions',\n configurable: false,\n },\n },\n};\n","'use strict';\n\nmodule.exports = {\n collectionName: 'up_roles',\n info: {\n name: 'role',\n description: '',\n singularName: 'role',\n pluralName: 'roles',\n displayName: 'Role',\n },\n pluginOptions: {\n 'content-manager': {\n visible: false,\n },\n 'content-type-builder': {\n visible: false,\n },\n },\n attributes: {\n name: {\n type: 'string',\n minLength: 3,\n required: true,\n configurable: false,\n },\n description: {\n type: 'string',\n configurable: false,\n },\n type: {\n type: 'string',\n unique: true,\n configurable: false,\n },\n permissions: {\n type: 'relation',\n relation: 'oneToMany',\n target: 'plugin::users-permissions.permission',\n mappedBy: 'role',\n configurable: false,\n },\n users: {\n type: 'relation',\n relation: 'oneToMany',\n target: 'plugin::users-permissions.user',\n mappedBy: 'role',\n configurable: false,\n },\n },\n};\n","'use strict';\n\nmodule.exports = {\n attributes: {\n resetPasswordToken: {\n hidden: true,\n },\n confirmationToken: {\n hidden: true,\n },\n provider: {\n hidden: true,\n },\n },\n};\n","'use strict';\n\nconst schemaConfig = require('./schema-config');\n\nmodule.exports = {\n collectionName: 'up_users',\n info: {\n name: 'user',\n description: '',\n singularName: 'user',\n pluralName: 'users',\n displayName: 'User',\n },\n options: {\n timestamps: true,\n },\n attributes: {\n username: {\n type: 'string',\n minLength: 3,\n unique: true,\n configurable: false,\n required: true,\n },\n email: {\n type: 'email',\n minLength: 6,\n configurable: false,\n required: true,\n },\n provider: {\n type: 'string',\n configurable: false,\n },\n password: {\n type: 'password',\n minLength: 6,\n configurable: false,\n private: true,\n searchable: false,\n },\n resetPasswordToken: {\n type: 'string',\n configurable: false,\n private: true,\n searchable: false,\n },\n confirmationToken: {\n type: 'string',\n configurable: false,\n private: true,\n searchable: false,\n },\n confirmed: {\n type: 'boolean',\n default: false,\n configurable: false,\n },\n blocked: {\n type: 'boolean',\n default: false,\n configurable: false,\n },\n role: {\n type: 'relation',\n relation: 'manyToOne',\n target: 'plugin::users-permissions.role',\n inversedBy: 'users',\n configurable: false,\n },\n },\n\n config: schemaConfig, // TODO: to move to content-manager options\n};\n","'use strict';\n\nconst permission = require('./permission');\nconst role = require('./role');\nconst user = require('./user');\n\nmodule.exports = {\n permission: { schema: permission },\n role: { schema: role },\n user: { schema: user },\n};\n","'use strict';\n\nconst path = require('path');\nconst utils = require('@strapi/utils');\nconst { isString, has, toLower } = require('lodash/fp');\n\nconst { RateLimitError } = utils.errors;\n\nmodule.exports =\n (config, { strapi }) =>\n async (ctx, next) => {\n let rateLimitConfig = strapi.config.get('plugin::users-permissions.ratelimit');\n\n if (!rateLimitConfig) {\n rateLimitConfig = {\n enabled: true,\n };\n }\n\n if (!has('enabled', rateLimitConfig)) {\n rateLimitConfig.enabled = true;\n }\n\n if (rateLimitConfig.enabled === true) {\n const rateLimit = require('koa2-ratelimit').RateLimit;\n\n const userIdentifier = toLower(ctx.request.body.email) || 'unknownIdentifier';\n const requestPath = isString(ctx.request.path)\n ? toLower(path.normalize(ctx.request.path))\n : 'invalidPath';\n\n const loadConfig = {\n interval: { min: 5 },\n max: 5,\n prefixKey: `${userIdentifier}:${requestPath}:${ctx.request.ip}`,\n handler() {\n throw new RateLimitError();\n },\n ...rateLimitConfig,\n ...config,\n };\n\n return rateLimit.middleware(loadConfig)(ctx, next);\n }\n\n return next();\n };\n","'use strict';\n\nconst rateLimit = require('./rateLimit');\n\nmodule.exports = {\n rateLimit,\n};\n","'use strict';\n\n/**\n * Jwt.js service\n *\n * @description: A set of functions similar to controller's actions to avoid code duplication.\n */\n\nconst _ = require('lodash');\nconst jwt = require('jsonwebtoken');\n\nmodule.exports = ({ strapi }) => ({\n getToken(ctx) {\n let token;\n\n if (ctx.request && ctx.request.header && ctx.request.header.authorization) {\n const parts = ctx.request.header.authorization.split(/\\s+/);\n\n if (parts[0].toLowerCase() !== 'bearer' || parts.length !== 2) {\n return null;\n }\n\n token = parts[1];\n } else {\n return null;\n }\n\n return this.verify(token);\n },\n\n issue(payload, jwtOptions = {}) {\n _.defaults(jwtOptions, strapi.config.get('plugin::users-permissions.jwt'));\n return jwt.sign(\n _.clone(payload.toJSON ? payload.toJSON() : payload),\n strapi.config.get('plugin::users-permissions.jwtSecret'),\n jwtOptions\n );\n },\n\n verify(token) {\n return new Promise((resolve, reject) => {\n jwt.verify(\n token,\n strapi.config.get('plugin::users-permissions.jwtSecret'),\n {},\n (err, tokenPayload = {}) => {\n if (err) {\n return reject(new Error('Invalid token.'));\n }\n resolve(tokenPayload);\n }\n );\n });\n },\n});\n","'use strict';\n\n/**\n * Module dependencies\n */\n\n// Public node modules.\nconst _ = require('lodash');\nconst urlJoin = require('url-join');\n\nconst { getService } = 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 // Create the new user.\n const newUser = {\n ...profile,\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","'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\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 return strapi.db.query(USER_MODEL_UID).create({\n data: await this.ensureHashedPasswords(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 return strapi.db.query(USER_MODEL_UID).update({\n where: { id: userId },\n data: await this.ensureHashedPasswords(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 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","'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","'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} = 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.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 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 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","'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","'use strict';\n\nconst PUBLIC_ROLE_FILTER = { role: { type: 'public' } };\n\nmodule.exports = ({ strapi }) => ({\n /**\n * Find permissions associated to a specific role ID\n *\n * @param {number} roleID\n *\n * @return {object[]}\n */\n async findRolePermissions(roleID) {\n return strapi.db.query('plugin::users-permissions.role').load({ id: roleID }, 'permissions');\n },\n\n /**\n * Find permissions for the public role\n *\n * @return {object[]}\n */\n async findPublicPermissions() {\n return strapi.db.query('plugin::users-permissions.permission').findMany({\n where: PUBLIC_ROLE_FILTER,\n });\n },\n\n /**\n * Transform a Users-Permissions' action into a content API one\n *\n * @param {object} permission\n * @param {string} permission.action\n *\n * @return {{ action: string }}\n */\n toContentAPIPermission(permission) {\n const { action } = permission;\n\n return { action };\n },\n});\n","'use strict';\n\nconst jwt = require('./jwt');\nconst providers = require('./providers');\nconst user = require('./user');\nconst role = require('./role');\nconst usersPermissions = require('./users-permissions');\nconst providersRegistry = require('./providers-registry');\nconst permission = require('./permission');\n\nmodule.exports = {\n jwt,\n providers,\n 'providers-registry': providersRegistry,\n role,\n user,\n 'users-permissions': usersPermissions,\n permission,\n};\n","'use strict';\n\nmodule.exports = [\n {\n method: 'GET',\n path: '/permissions',\n handler: 'permissions.getPermissions',\n },\n {\n method: 'GET',\n path: '/policies',\n handler: 'permissions.getPolicies',\n },\n\n {\n method: 'GET',\n path: '/routes',\n handler: 'permissions.getRoutes',\n },\n];\n","'use strict';\n\nmodule.exports = [\n {\n method: 'GET',\n path: '/email-templates',\n handler: 'settings.getEmailTemplate',\n config: {\n policies: [\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::users-permissions.email-templates.read'],\n },\n },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/email-templates',\n handler: 'settings.updateEmailTemplate',\n config: {\n policies: [\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::users-permissions.email-templates.update'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/advanced',\n handler: 'settings.getAdvancedSettings',\n config: {\n policies: [\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::users-permissions.advanced-settings.read'],\n },\n },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/advanced',\n handler: 'settings.updateAdvancedSettings',\n config: {\n policies: [\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::users-permissions.advanced-settings.update'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/providers',\n handler: 'settings.getProviders',\n config: {\n policies: [\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::users-permissions.providers.read'],\n },\n },\n ],\n },\n },\n\n {\n method: 'PUT',\n path: '/providers',\n handler: 'settings.updateProviders',\n config: {\n policies: [\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::users-permissions.providers.update'],\n },\n },\n ],\n },\n },\n];\n","'use strict';\n\nmodule.exports = [\n {\n method: 'GET',\n path: '/roles/:id',\n handler: 'role.findOne',\n config: {\n policies: [\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::users-permissions.roles.read'],\n },\n },\n ],\n },\n },\n {\n method: 'GET',\n path: '/roles',\n handler: 'role.find',\n config: {\n policies: [\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::users-permissions.roles.read'],\n },\n },\n ],\n },\n },\n {\n method: 'POST',\n path: '/roles',\n handler: 'role.createRole',\n config: {\n policies: [\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::users-permissions.roles.create'],\n },\n },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/roles/:role',\n handler: 'role.updateRole',\n config: {\n policies: [\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::users-permissions.roles.update'],\n },\n },\n ],\n },\n },\n {\n method: 'DELETE',\n path: '/roles/:role',\n handler: 'role.deleteRole',\n config: {\n policies: [\n {\n name: 'admin::hasPermissions',\n config: {\n actions: ['plugin::users-permissions.roles.delete'],\n },\n },\n ],\n },\n },\n];\n","'use strict';\n\nconst permissionsRoutes = require('./permissions');\nconst settingsRoutes = require('./settings');\nconst roleRoutes = require('./role');\n\nmodule.exports = {\n type: 'admin',\n routes: [...roleRoutes, ...settingsRoutes, ...permissionsRoutes],\n};\n","'use strict';\n\nmodule.exports = [\n {\n method: 'GET',\n path: '/connect/(.*)',\n handler: 'auth.connect',\n config: {\n middlewares: ['plugin::users-permissions.rateLimit'],\n prefix: '',\n },\n },\n {\n method: 'POST',\n path: '/auth/local',\n handler: 'auth.callback',\n config: {\n middlewares: ['plugin::users-permissions.rateLimit'],\n prefix: '',\n },\n },\n {\n method: 'POST',\n path: '/auth/local/register',\n handler: 'auth.register',\n config: {\n middlewares: ['plugin::users-permissions.rateLimit'],\n prefix: '',\n },\n },\n {\n method: 'GET',\n path: '/auth/:provider/callback',\n handler: 'auth.callback',\n config: {\n prefix: '',\n },\n },\n {\n method: 'POST',\n path: '/auth/forgot-password',\n handler: 'auth.forgotPassword',\n config: {\n middlewares: ['plugin::users-permissions.rateLimit'],\n prefix: '',\n },\n },\n {\n method: 'POST',\n path: '/auth/reset-password',\n handler: 'auth.resetPassword',\n config: {\n middlewares: ['plugin::users-permissions.rateLimit'],\n prefix: '',\n },\n },\n {\n method: 'GET',\n path: '/auth/email-confirmation',\n handler: 'auth.emailConfirmation',\n config: {\n prefix: '',\n },\n },\n {\n method: 'POST',\n path: '/auth/send-email-confirmation',\n handler: 'auth.sendEmailConfirmation',\n config: {\n prefix: '',\n },\n },\n {\n method: 'POST',\n path: '/auth/change-password',\n handler: 'auth.changePassword',\n config: {\n middlewares: ['plugin::users-permissions.rateLimit'],\n prefix: '',\n },\n },\n];\n","'use strict';\n\nmodule.exports = [\n {\n method: 'GET',\n path: '/users/count',\n handler: 'user.count',\n config: {\n prefix: '',\n },\n },\n {\n method: 'GET',\n path: '/users',\n handler: 'user.find',\n config: {\n prefix: '',\n },\n },\n {\n method: 'GET',\n path: '/users/me',\n handler: 'user.me',\n config: {\n prefix: '',\n },\n },\n {\n method: 'GET',\n path: '/users/:id',\n handler: 'user.findOne',\n config: {\n prefix: '',\n },\n },\n {\n method: 'POST',\n path: '/users',\n handler: 'user.create',\n config: {\n prefix: '',\n },\n },\n {\n method: 'PUT',\n path: '/users/:id',\n handler: 'user.update',\n config: {\n prefix: '',\n },\n },\n {\n method: 'DELETE',\n path: '/users/:id',\n handler: 'user.destroy',\n config: {\n prefix: '',\n },\n },\n];\n","'use strict';\n\nmodule.exports = [\n {\n method: 'GET',\n path: '/roles/:id',\n handler: 'role.findOne',\n },\n {\n method: 'GET',\n path: '/roles',\n handler: 'role.find',\n },\n {\n method: 'POST',\n path: '/roles',\n handler: 'role.createRole',\n },\n {\n method: 'PUT',\n path: '/roles/:role',\n handler: 'role.updateRole',\n },\n {\n method: 'DELETE',\n path: '/roles/:role',\n handler: 'role.deleteRole',\n },\n];\n","'use strict';\n\nmodule.exports = [\n {\n method: 'GET',\n path: '/permissions',\n handler: 'permissions.getPermissions',\n },\n];\n","'use strict';\n\nconst authRoutes = require('./auth');\nconst userRoutes = require('./user');\nconst roleRoutes = require('./role');\nconst permissionsRoutes = require('./permissions');\n\nmodule.exports = {\n type: 'content-api',\n routes: [...authRoutes, ...userRoutes, ...roleRoutes, ...permissionsRoutes],\n};\n","'use strict';\n\nmodule.exports = {\n admin: require('./admin'),\n 'content-api': require('./content-api'),\n};\n","'use strict';\n\nconst { yup, validateYupSchema } = require('@strapi/utils');\n\nconst callbackSchema = yup.object({\n identifier: yup.string().required(),\n password: yup.string().required(),\n});\n\nconst createRegisterSchema = (config) =>\n yup.object({\n email: yup.string().email().required(),\n username: yup.string().required(),\n password: yup\n .string()\n .required()\n .test(async function (value) {\n if (typeof config?.validatePassword === 'function') {\n try {\n const isValid = await config.validatePassword(value);\n if (!isValid) {\n return this.createError({ message: 'Password validation failed.' });\n }\n } catch (error) {\n return this.createError({ message: error.message || 'An error occurred.' });\n }\n }\n return true;\n }),\n });\n\nconst sendEmailConfirmationSchema = yup.object({\n email: yup.string().email().required(),\n});\n\nconst validateEmailConfirmationSchema = yup.object({\n confirmation: yup.string().required(),\n});\n\nconst forgotPasswordSchema = yup\n .object({\n email: yup.string().email().required(),\n })\n .noUnknown();\n\nconst createResetPasswordSchema = (config) =>\n yup\n .object({\n password: yup\n .string()\n .required()\n .test(async function (value) {\n if (typeof config?.validatePassword === 'function') {\n try {\n const isValid = await config.validatePassword(value);\n if (!isValid) {\n return this.createError({ message: 'Password validation failed.' });\n }\n } catch (error) {\n return this.createError({ message: error.message || 'An error occurred.' });\n }\n }\n return true;\n }),\n\n passwordConfirmation: yup\n .string()\n .required()\n .oneOf([yup.ref('password')], 'Passwords do not match'),\n\n code: yup.string().required(),\n })\n .noUnknown();\n\nconst createChangePasswordSchema = (config) =>\n yup\n .object({\n password: yup\n .string()\n .required()\n .test(async function (value) {\n if (typeof config?.validatePassword === 'function') {\n try {\n const isValid = await config.validatePassword(value);\n if (!isValid) {\n return this.createError({ message: 'Password validation failed.' });\n }\n } catch (error) {\n return this.createError({ message: error.message || 'An error occurred.' });\n }\n }\n return true;\n }),\n passwordConfirmation: yup\n .string()\n .required()\n .oneOf([yup.ref('password')], 'Passwords do not match'),\n currentPassword: yup.string().required(),\n })\n .noUnknown();\n\nmodule.exports = {\n validateCallbackBody: validateYupSchema(callbackSchema),\n validateRegisterBody: (payload, config) =>\n validateYupSchema(createRegisterSchema(config))(payload),\n validateSendEmailConfirmationBody: validateYupSchema(sendEmailConfirmationSchema),\n validateEmailConfirmationBody: validateYupSchema(validateEmailConfirmationSchema),\n validateForgotPasswordBody: validateYupSchema(forgotPasswordSchema),\n validateResetPasswordBody: (payload, config) =>\n validateYupSchema(createResetPasswordSchema(config))(payload),\n validateChangePasswordBody: (payload, config) =>\n validateYupSchema(createChangePasswordSchema(config))(payload),\n};\n","'use strict';\n\n/**\n * Auth.js controller\n *\n * @description: A set of functions called \"actions\" for managing `Auth`.\n */\n\n/* eslint-disable no-useless-escape */\nconst crypto = require('crypto');\nconst _ = require('lodash');\nconst { concat, compact, isArray } = require('lodash/fp');\nconst utils = require('@strapi/utils');\nconst { getService } = require('../utils');\nconst {\n validateCallbackBody,\n validateRegisterBody,\n validateSendEmailConfirmationBody,\n validateForgotPasswordBody,\n validateResetPasswordBody,\n validateEmailConfirmationBody,\n validateChangePasswordBody,\n} = require('./validation/auth');\n\nconst { ApplicationError, ValidationError, ForbiddenError } = utils.errors;\n\nconst sanitizeUser = (user, ctx) => {\n const { auth } = ctx.state;\n const userSchema = strapi.getModel('plugin::users-permissions.user');\n\n return strapi.contentAPI.sanitize.output(user, userSchema, { auth });\n};\n\nmodule.exports = ({ strapi }) => ({\n async callback(ctx) {\n const provider = ctx.params.provider || 'local';\n const params = ctx.request.body;\n\n const store = strapi.store({ type: 'plugin', name: 'users-permissions' });\n const grantSettings = await store.get({ key: 'grant' });\n\n const grantProvider = provider === 'local' ? 'email' : provider;\n\n if (!_.get(grantSettings, [grantProvider, 'enabled'])) {\n throw new ApplicationError('This provider is disabled');\n }\n\n if (provider === 'local') {\n await validateCallbackBody(params);\n\n const { identifier } = params;\n\n // Check if the user exists.\n const user = await strapi.db.query('plugin::users-permissions.user').findOne({\n where: {\n provider,\n $or: [{ email: identifier.toLowerCase() }, { username: identifier }],\n },\n });\n\n if (!user) {\n throw new ValidationError('Invalid identifier or password');\n }\n\n if (!user.password) {\n throw new ValidationError('Invalid identifier or password');\n }\n\n const validPassword = await getService('user').validatePassword(\n params.password,\n user.password\n );\n\n if (!validPassword) {\n throw new ValidationError('Invalid identifier or password');\n }\n\n const advancedSettings = await store.get({ key: 'advanced' });\n const requiresConfirmation = _.get(advancedSettings, 'email_confirmation');\n\n if (requiresConfirmation && user.confirmed !== true) {\n throw new ApplicationError('Your account email is not confirmed');\n }\n\n if (user.blocked === true) {\n throw new ApplicationError('Your account has been blocked by an administrator');\n }\n\n return ctx.send({\n jwt: getService('jwt').issue({ id: user.id }),\n user: await sanitizeUser(user, ctx),\n });\n }\n\n // Connect the user with the third-party provider.\n try {\n const user = await getService('providers').connect(provider, ctx.query);\n\n if (user.blocked) {\n throw new ForbiddenError('Your account has been blocked by an administrator');\n }\n\n return ctx.send({\n jwt: getService('jwt').issue({ id: user.id }),\n user: await sanitizeUser(user, ctx),\n });\n } catch (error) {\n throw new ApplicationError(error.message);\n }\n },\n\n async changePassword(ctx) {\n if (!ctx.state.user) {\n throw new ApplicationError('You must be authenticated to reset your password');\n }\n\n const validations = strapi.config.get('plugin::users-permissions.validationRules');\n\n const { currentPassword, password } = await validateChangePasswordBody(\n ctx.request.body,\n validations\n );\n\n const user = await strapi.db\n .query('plugin::users-permissions.user')\n .findOne({ where: { id: ctx.state.user.id } });\n\n const validPassword = await getService('user').validatePassword(currentPassword, user.password);\n\n if (!validPassword) {\n throw new ValidationError('The provided current password is invalid');\n }\n\n if (currentPassword === password) {\n throw new ValidationError('Your new password must be different than your current password');\n }\n\n await getService('user').edit(user.id, { password });\n\n ctx.send({\n jwt: getService('jwt').issue({ id: user.id }),\n user: await sanitizeUser(user, ctx),\n });\n },\n\n async resetPassword(ctx) {\n const validations = strapi.config.get('plugin::users-permissions.validationRules');\n\n const { password, passwordConfirmation, code } = await validateResetPasswordBody(\n ctx.request.body,\n validations\n );\n\n if (password !== passwordConfirmation) {\n throw new ValidationError('Passwords do not match');\n }\n\n const user = await strapi.db\n .query('plugin::users-permissions.user')\n .findOne({ where: { resetPasswordToken: code } });\n\n if (!user) {\n throw new ValidationError('Incorrect code provided');\n }\n\n await getService('user').edit(user.id, {\n resetPasswordToken: null,\n password,\n });\n\n // Update the user.\n ctx.send({\n jwt: getService('jwt').issue({ id: user.id }),\n user: await sanitizeUser(user, ctx),\n });\n },\n\n async connect(ctx, next) {\n const grant = require('grant').koa();\n\n const providers = await strapi\n .store({ type: 'plugin', name: 'users-permissions', key: 'grant' })\n .get();\n\n const apiPrefix = strapi.config.get('api.rest.prefix');\n const grantConfig = {\n defaults: {\n prefix: `${apiPrefix}/connect`,\n },\n ...providers,\n };\n\n const [requestPath] = ctx.request.url.split('?');\n const provider = requestPath.split('/connect/')[1].split('/')[0];\n\n if (!_.get(grantConfig[provider], 'enabled')) {\n throw new ApplicationError('This provider is disabled');\n }\n\n if (!strapi.config.server.url.startsWith('http')) {\n strapi.log.warn(\n 'You are using a third party provider for login. Make sure to set an absolute url in config/server.js. More info here: https://docs.strapi.io/developer-docs/latest/plugins/users-permissions.html#setting-up-the-server-url'\n );\n }\n\n // Ability to pass OAuth callback dynamically\n const queryCustomCallback = _.get(ctx, 'query.callback');\n const dynamicSessionCallback = _.get(ctx, 'session.grant.dynamic.callback');\n\n const customCallback = queryCustomCallback ?? dynamicSessionCallback;\n\n // The custom callback is validated to make sure it's not redirecting to an unwanted actor.\n if (customCallback !== undefined) {\n try {\n // We're extracting the callback validator from the plugin config since it can be user-customized\n const { validate: validateCallback } = strapi\n .plugin('users-permissions')\n .config('callback');\n\n await validateCallback(customCallback, grantConfig[provider]);\n\n grantConfig[provider].callback = customCallback;\n } catch (e) {\n throw new ValidationError('Invalid callback URL provided', { callback: customCallback });\n }\n }\n\n // Build a valid redirect URI for the current provider\n grantConfig[provider].redirect_uri = getService('providers').buildRedirectUri(provider);\n\n return grant(grantConfig)(ctx, next);\n },\n\n async forgotPassword(ctx) {\n const { email } = await validateForgotPasswordBody(ctx.request.body);\n\n const pluginStore = await strapi.store({ type: 'plugin', name: 'users-permissions' });\n\n const emailSettings = await pluginStore.get({ key: 'email' });\n const advancedSettings = await pluginStore.get({ key: 'advanced' });\n\n // Find the user by email.\n const user = await strapi.db\n .query('plugin::users-permissions.user')\n .findOne({ where: { email: email.toLowerCase() } });\n\n if (!user || user.blocked) {\n return ctx.send({ ok: true });\n }\n\n // Generate random token.\n const userInfo = await sanitizeUser(user, ctx);\n\n const resetPasswordToken = crypto.randomBytes(64).toString('hex');\n\n const resetPasswordSettings = _.get(emailSettings, 'reset_password.options', {});\n const emailBody = await getService('users-permissions').template(\n resetPasswordSettings.message,\n {\n URL: advancedSettings.email_reset_password,\n SERVER_URL: strapi.config.get('server.absoluteUrl'),\n ADMIN_URL: strapi.config.get('admin.absoluteUrl'),\n USER: userInfo,\n TOKEN: resetPasswordToken,\n }\n );\n\n const emailObject = await getService('users-permissions').template(\n resetPasswordSettings.object,\n {\n USER: userInfo,\n }\n );\n\n const emailToSend = {\n to: user.email,\n from:\n resetPasswordSettings.from.email || resetPasswordSettings.from.name\n ? `${resetPasswordSettings.from.name} <${resetPasswordSettings.from.email}>`\n : undefined,\n replyTo: resetPasswordSettings.response_email,\n subject: emailObject,\n text: emailBody,\n html: emailBody,\n };\n\n // NOTE: Update the user before sending the email so an Admin can generate the link if the email fails\n await getService('user').edit(user.id, { resetPasswordToken });\n\n // Send an email to the user.\n await strapi.plugin('email').service('email').send(emailToSend);\n\n ctx.send({ ok: true });\n },\n\n async register(ctx) {\n const pluginStore = await strapi.store({ type: 'plugin', name: 'users-permissions' });\n\n const settings = await pluginStore.get({ key: 'advanced' });\n\n if (!settings.allow_register) {\n throw new ApplicationError('Register action is currently disabled');\n }\n\n const { register } = strapi.config.get('plugin::users-permissions');\n const alwaysAllowedKeys = ['username', 'password', 'email'];\n\n // Note that we intentionally do not filter allowedFields to allow a project to explicitly accept private or other Strapi field on registration\n const allowedKeys = compact(\n concat(alwaysAllowedKeys, isArray(register?.allowedFields) ? register.allowedFields : [])\n );\n\n // Check if there are any keys in requestBody that are not in allowedKeys\n const invalidKeys = Object.keys(ctx.request.body).filter((key) => !allowedKeys.includes(key));\n\n if (invalidKeys.length > 0) {\n // If there are invalid keys, throw an error\n throw new ValidationError(`Invalid parameters: ${invalidKeys.join(', ')}`);\n }\n\n const params = {\n ..._.pick(ctx.request.body, allowedKeys),\n provider: 'local',\n };\n\n const validations = strapi.config.get('plugin::users-permissions.validationRules');\n\n await validateRegisterBody(params, validations);\n\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { type: settings.default_role } });\n\n if (!role) {\n throw new ApplicationError('Impossible to find the default role');\n }\n\n const { email, username, provider } = params;\n\n const identifierFilter = {\n $or: [\n { email: email.toLowerCase() },\n { username: email.toLowerCase() },\n { username },\n { email: username },\n ],\n };\n\n const conflictingUserCount = await strapi.db.query('plugin::users-permissions.user').count({\n where: { ...identifierFilter, provider },\n });\n\n if (conflictingUserCount > 0) {\n throw new ApplicationError('Email or Username are already taken');\n }\n\n if (settings.unique_email) {\n const conflictingUserCount = await strapi.db.query('plugin::users-permissions.user').count({\n where: { ...identifierFilter },\n });\n\n if (conflictingUserCount > 0) {\n throw new ApplicationError('Email or Username are already taken');\n }\n }\n\n const newUser = {\n ...params,\n role: role.id,\n email: email.toLowerCase(),\n username,\n confirmed: !settings.email_confirmation,\n };\n\n const user = await getService('user').add(newUser);\n\n const sanitizedUser = await sanitizeUser(user, ctx);\n\n if (settings.email_confirmation) {\n try {\n await getService('user').sendConfirmationEmail(sanitizedUser);\n } catch (err) {\n strapi.log.error(err);\n throw new ApplicationError('Error sending confirmation email');\n }\n\n return ctx.send({ user: sanitizedUser });\n }\n\n const jwt = getService('jwt').issue(_.pick(user, ['id']));\n\n return ctx.send({\n jwt,\n user: sanitizedUser,\n });\n },\n\n async emailConfirmation(ctx, next, returnUser) {\n const { confirmation: confirmationToken } = await validateEmailConfirmationBody(ctx.query);\n\n const userService = getService('user');\n const jwtService = getService('jwt');\n\n const [user] = await userService.fetchAll({ filters: { confirmationToken } });\n\n if (!user) {\n throw new ValidationError('Invalid token');\n }\n\n await userService.edit(user.id, { confirmed: true, confirmationToken: null });\n\n if (returnUser) {\n ctx.send({\n jwt: jwtService.issue({ id: user.id }),\n user: await sanitizeUser(user, ctx),\n });\n } else {\n const settings = await strapi\n .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' })\n .get();\n\n ctx.redirect(settings.email_confirmation_redirection || '/');\n }\n },\n\n async sendEmailConfirmation(ctx) {\n const { email } = await validateSendEmailConfirmationBody(ctx.request.body);\n\n const user = await strapi.db.query('plugin::users-permissions.user').findOne({\n where: { email: email.toLowerCase() },\n });\n\n if (!user) {\n return ctx.send({ email, sent: true });\n }\n\n if (user.confirmed) {\n throw new ApplicationError('Already confirmed');\n }\n\n if (user.blocked) {\n throw new ApplicationError('User blocked');\n }\n\n await getService('user').sendConfirmationEmail(user);\n\n ctx.send({\n email: user.email,\n sent: true,\n });\n },\n});\n","'use strict';\n\nconst { yup, validateYupSchema } = require('@strapi/utils');\n\nconst deleteRoleSchema = yup.object().shape({\n role: yup.strapiID().required(),\n});\n\nconst createUserBodySchema = yup.object().shape({\n email: yup.string().email().required(),\n username: yup.string().min(1).required(),\n password: yup.string().min(1).required(),\n role: yup.lazy((value) =>\n typeof value === 'object'\n ? yup\n .object()\n .shape({\n connect: yup\n .array()\n .of(yup.object().shape({ id: yup.strapiID().required() }))\n .min(1, 'Users must have a role')\n .required(),\n })\n .required()\n : yup.strapiID().required()\n ),\n});\n\nconst updateUserBodySchema = yup.object().shape({\n email: yup.string().email().min(1),\n username: yup.string().min(1),\n password: yup.string().min(1),\n role: yup.lazy((value) =>\n typeof value === 'object'\n ? yup.object().shape({\n connect: yup\n .array()\n .of(yup.object().shape({ id: yup.strapiID().required() }))\n .required(),\n disconnect: yup\n .array()\n .test('CheckDisconnect', 'Cannot remove role', function test(disconnectValue) {\n if (value.connect.length === 0 && disconnectValue.length > 0) {\n return false;\n }\n\n return true;\n })\n .required(),\n })\n : yup.strapiID()\n ),\n});\n\nmodule.exports = {\n validateCreateUserBody: validateYupSchema(createUserBodySchema),\n validateUpdateUserBody: validateYupSchema(updateUserBodySchema),\n validateDeleteRoleBody: validateYupSchema(deleteRoleSchema),\n};\n","'use strict';\n\n/**\n * User.js controller\n *\n * @description: A set of functions called \"actions\" for managing `User`.\n */\n\nconst _ = require('lodash');\nconst utils = require('@strapi/utils');\nconst { getService } = require('../utils');\nconst { validateCreateUserBody, validateUpdateUserBody } = require('./validation/user');\n\nconst { ApplicationError, ValidationError, NotFoundError } = utils.errors;\n\nconst sanitizeOutput = async (user, ctx) => {\n const schema = strapi.getModel('plugin::users-permissions.user');\n const { auth } = ctx.state;\n\n return strapi.contentAPI.sanitize.output(user, schema, { auth });\n};\n\nconst validateQuery = async (query, ctx) => {\n const schema = strapi.getModel('plugin::users-permissions.user');\n const { auth } = ctx.state;\n\n return strapi.contentAPI.validate.query(query, schema, { auth });\n};\n\nconst sanitizeQuery = async (query, ctx) => {\n const schema = strapi.getModel('plugin::users-permissions.user');\n const { auth } = ctx.state;\n\n return strapi.contentAPI.sanitize.query(query, schema, { auth });\n};\n\nmodule.exports = {\n /**\n * Create a/an user record.\n * @return {Object}\n */\n async create(ctx) {\n const advanced = await strapi\n .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' })\n .get();\n\n await validateCreateUserBody(ctx.request.body);\n\n const { email, username, role } = ctx.request.body;\n\n const userWithSameUsername = await strapi.db\n .query('plugin::users-permissions.user')\n .findOne({ where: { username } });\n\n if (userWithSameUsername) {\n if (!email) throw new ApplicationError('Username already taken');\n }\n\n if (advanced.unique_email) {\n const userWithSameEmail = await strapi.db\n .query('plugin::users-permissions.user')\n .findOne({ where: { email: email.toLowerCase() } });\n\n if (userWithSameEmail) {\n throw new ApplicationError('Email already taken');\n }\n }\n\n const user = {\n ...ctx.request.body,\n email: email.toLowerCase(),\n provider: 'local',\n };\n\n if (!role) {\n const defaultRole = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { type: advanced.default_role } });\n\n user.role = defaultRole.id;\n }\n\n try {\n const data = await getService('user').add(user);\n const sanitizedData = await sanitizeOutput(data, ctx);\n\n ctx.created(sanitizedData);\n } catch (error) {\n throw new ApplicationError(error.message);\n }\n },\n\n /**\n * Update a/an user record.\n * @return {Object}\n */\n async update(ctx) {\n const advancedConfigs = await strapi\n .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' })\n .get();\n\n const { id } = ctx.params;\n const { email, username, password } = ctx.request.body;\n\n const user = await getService('user').fetch(id);\n if (!user) {\n throw new NotFoundError(`User not found`);\n }\n\n await validateUpdateUserBody(ctx.request.body);\n\n if (user.provider === 'local' && _.has(ctx.request.body, 'password') && !password) {\n throw new ValidationError('password.notNull');\n }\n\n if (_.has(ctx.request.body, 'username')) {\n const userWithSameUsername = await strapi.db\n .query('plugin::users-permissions.user')\n .findOne({ where: { username } });\n\n if (userWithSameUsername && _.toString(userWithSameUsername.id) !== _.toString(id)) {\n throw new ApplicationError('Username already taken');\n }\n }\n\n if (_.has(ctx.request.body, 'email') && advancedConfigs.unique_email) {\n const userWithSameEmail = await strapi.db\n .query('plugin::users-permissions.user')\n .findOne({ where: { email: email.toLowerCase() } });\n\n if (userWithSameEmail && _.toString(userWithSameEmail.id) !== _.toString(id)) {\n throw new ApplicationError('Email already taken');\n }\n ctx.request.body.email = ctx.request.body.email.toLowerCase();\n }\n\n const updateData = {\n ...ctx.request.body,\n };\n\n const data = await getService('user').edit(user.id, updateData);\n const sanitizedData = await sanitizeOutput(data, ctx);\n\n ctx.send(sanitizedData);\n },\n\n /**\n * Retrieve user records.\n * @return {Object|Array}\n */\n async find(ctx) {\n await validateQuery(ctx.query, ctx);\n const sanitizedQuery = await sanitizeQuery(ctx.query, ctx);\n const users = await getService('user').fetchAll(sanitizedQuery);\n\n ctx.body = await Promise.all(users.map((user) => sanitizeOutput(user, ctx)));\n },\n\n /**\n * Retrieve a user record.\n * @return {Object}\n */\n async findOne(ctx) {\n const { id } = ctx.params;\n await validateQuery(ctx.query, ctx);\n const sanitizedQuery = await sanitizeQuery(ctx.query, ctx);\n\n let data = await getService('user').fetch(id, sanitizedQuery);\n\n if (data) {\n data = await sanitizeOutput(data, ctx);\n }\n\n ctx.body = data;\n },\n\n /**\n * Retrieve user count.\n * @return {Number}\n */\n async count(ctx) {\n await validateQuery(ctx.query, ctx);\n const sanitizedQuery = await sanitizeQuery(ctx.query, ctx);\n\n ctx.body = await getService('user').count(sanitizedQuery);\n },\n\n /**\n * Destroy a/an user record.\n * @return {Object}\n */\n async destroy(ctx) {\n const { id } = ctx.params;\n\n const data = await getService('user').remove({ id });\n const sanitizedUser = await sanitizeOutput(data, ctx);\n\n ctx.send(sanitizedUser);\n },\n\n /**\n * Retrieve authenticated user.\n * @return {Object|Array}\n */\n async me(ctx) {\n const authUser = ctx.state.user;\n const { query } = ctx;\n\n if (!authUser) {\n return ctx.unauthorized();\n }\n\n await validateQuery(query, ctx);\n const sanitizedQuery = await sanitizeQuery(query, ctx);\n const user = await getService('user').fetch(authUser.id, sanitizedQuery);\n\n ctx.body = await sanitizeOutput(user, ctx);\n },\n};\n","'use strict';\n\nconst _ = require('lodash');\nconst { async, errors } = require('@strapi/utils');\nconst { getService } = require('../utils');\nconst { validateDeleteRoleBody } = require('./validation/user');\n\nconst { ApplicationError, ValidationError } = errors;\n\nconst sanitizeOutput = async (role) => {\n const { sanitizeLocalizationFields } = strapi.plugin('i18n').service('sanitize');\n const schema = strapi.getModel('plugin::users-permissions.role');\n\n return async.pipe(sanitizeLocalizationFields(schema))(role);\n};\n\nmodule.exports = {\n /**\n * Default action.\n *\n * @return {Object}\n */\n async createRole(ctx) {\n if (_.isEmpty(ctx.request.body)) {\n throw new ValidationError('Request body cannot be empty');\n }\n\n await getService('role').createRole(ctx.request.body);\n\n ctx.send({ ok: true });\n },\n\n async findOne(ctx) {\n const { id } = ctx.params;\n\n const role = await getService('role').findOne(id);\n\n if (!role) {\n return ctx.notFound();\n }\n\n const safeRole = await sanitizeOutput(role);\n\n ctx.send({ role: safeRole });\n },\n\n async find(ctx) {\n const roles = await getService('role').find();\n\n const safeRoles = await Promise.all(roles.map(sanitizeOutput));\n\n ctx.send({ roles: safeRoles });\n },\n\n async updateRole(ctx) {\n const roleID = ctx.params.role;\n\n if (_.isEmpty(ctx.request.body)) {\n throw new ValidationError('Request body cannot be empty');\n }\n\n await getService('role').updateRole(roleID, ctx.request.body);\n\n ctx.send({ ok: true });\n },\n\n async deleteRole(ctx) {\n const roleID = ctx.params.role;\n\n if (!roleID) {\n await validateDeleteRoleBody(ctx.params);\n }\n\n // Fetch public role.\n const publicRole = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { type: 'public' } });\n\n const publicRoleID = publicRole.id;\n\n // Prevent from removing the public role.\n if (roleID.toString() === publicRoleID.toString()) {\n throw new ApplicationError('Cannot delete public role');\n }\n\n await getService('role').deleteRole(roleID, publicRoleID);\n\n ctx.send({ ok: true });\n },\n};\n","'use strict';\n\nconst _ = require('lodash');\nconst { getService } = require('../utils');\n\nmodule.exports = {\n async getPermissions(ctx) {\n const permissions = await getService('users-permissions').getActions();\n\n ctx.send({ permissions });\n },\n\n async getPolicies(ctx) {\n const policies = _.keys(strapi.plugin('users-permissions').policies);\n\n ctx.send({\n policies: _.without(policies, 'permissions'),\n });\n },\n\n async getRoutes(ctx) {\n const routes = await getService('users-permissions').getRoutes();\n\n ctx.send({ routes });\n },\n};\n","'use strict';\n\nconst { trim } = require('lodash/fp');\nconst {\n template: { createLooseInterpolationRegExp, createStrictInterpolationRegExp },\n} = require('@strapi/utils');\n\nconst invalidPatternsRegexes = [\n // Ignore \"evaluation\" patterns: <% ... %>\n /<%[^=]([\\s\\S]*?)%>/m,\n // Ignore basic string interpolations\n /\\${([^{}]*)}/m,\n];\n\nconst authorizedKeys = [\n 'URL',\n 'ADMIN_URL',\n 'SERVER_URL',\n 'CODE',\n 'USER',\n 'USER.email',\n 'USER.username',\n 'TOKEN',\n];\n\nconst matchAll = (pattern, src) => {\n const matches = [];\n let match;\n\n const regexPatternWithGlobal = RegExp(pattern, 'g');\n\n // eslint-disable-next-line no-cond-assign\n while ((match = regexPatternWithGlobal.exec(src))) {\n const [, group] = match;\n\n matches.push(trim(group));\n }\n\n return matches;\n};\n\nconst isValidEmailTemplate = (template) => {\n // Check for known invalid patterns\n for (const reg of invalidPatternsRegexes) {\n if (reg.test(template)) {\n return false;\n }\n }\n\n const interpolation = {\n // Strict interpolation pattern to match only valid groups\n strict: createStrictInterpolationRegExp(authorizedKeys),\n // Weak interpolation pattern to match as many group as possible.\n loose: createLooseInterpolationRegExp(),\n };\n\n // Compute both strict & loose matches\n const strictMatches = matchAll(interpolation.strict, template);\n const looseMatches = matchAll(interpolation.loose, template);\n\n // If we have more matches with the loose RegExp than with the strict one,\n // then it means that at least one of the interpolation group is invalid\n // Note: In the future, if we wanted to give more details for error formatting\n // purposes, we could return the difference between the two arrays\n if (looseMatches.length > strictMatches.length) {\n return false;\n }\n\n return true;\n};\n\nmodule.exports = {\n isValidEmailTemplate,\n};\n","'use strict';\n\nconst _ = require('lodash');\nconst { ValidationError } = require('@strapi/utils').errors;\nconst { getService } = require('../utils');\nconst { isValidEmailTemplate } = require('./validation/email-template');\n\nmodule.exports = {\n async getEmailTemplate(ctx) {\n ctx.send(await strapi.store({ type: 'plugin', name: 'users-permissions', key: 'email' }).get());\n },\n\n async updateEmailTemplate(ctx) {\n if (_.isEmpty(ctx.request.body)) {\n throw new ValidationError('Request body cannot be empty');\n }\n\n const emailTemplates = ctx.request.body['email-templates'];\n\n for (const key of Object.keys(emailTemplates)) {\n const template = emailTemplates[key].options.message;\n\n if (!isValidEmailTemplate(template)) {\n throw new ValidationError('Invalid template');\n }\n }\n\n await strapi\n .store({ type: 'plugin', name: 'users-permissions', key: 'email' })\n .set({ value: emailTemplates });\n\n ctx.send({ ok: true });\n },\n\n async getAdvancedSettings(ctx) {\n const settings = await strapi\n .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' })\n .get();\n\n const roles = await getService('role').find();\n\n ctx.send({ settings, roles });\n },\n\n async updateAdvancedSettings(ctx) {\n if (_.isEmpty(ctx.request.body)) {\n throw new ValidationError('Request body cannot be empty');\n }\n\n await strapi\n .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' })\n .set({ value: ctx.request.body });\n\n ctx.send({ ok: true });\n },\n\n async getProviders(ctx) {\n const providers = await strapi\n .store({ type: 'plugin', name: 'users-permissions', key: 'grant' })\n .get();\n\n for (const provider in providers) {\n if (provider !== 'email') {\n providers[provider].redirectUri = strapi\n .plugin('users-permissions')\n .service('providers')\n .buildRedirectUri(provider);\n }\n }\n\n ctx.send(providers);\n },\n\n async updateProviders(ctx) {\n if (_.isEmpty(ctx.request.body)) {\n throw new ValidationError('Request body cannot be empty');\n }\n\n await strapi\n .store({ type: 'plugin', name: 'users-permissions', key: 'grant' })\n .set({ value: ctx.request.body.providers });\n\n ctx.send({ ok: true });\n },\n};\n","'use strict';\n\nconst _ = require('lodash');\nconst { contentTypes: contentTypesUtils } = require('@strapi/utils');\nconst { ApplicationError, ValidationError, NotFoundError, ForbiddenError } =\n require('@strapi/utils').errors;\nconst { validateCreateUserBody, validateUpdateUserBody } = require('./validation/user');\n\nconst { UPDATED_BY_ATTRIBUTE, CREATED_BY_ATTRIBUTE } = contentTypesUtils.constants;\n\nconst userModel = 'plugin::users-permissions.user';\nconst ACTIONS = {\n read: 'plugin::content-manager.explorer.read',\n create: 'plugin::content-manager.explorer.create',\n edit: 'plugin::content-manager.explorer.update',\n delete: 'plugin::content-manager.explorer.delete',\n};\n\nconst findEntityAndCheckPermissions = async (ability, action, model, id) => {\n const doc = await strapi.service('plugin::content-manager.document-manager').findOne(id, model, {\n populate: [`${CREATED_BY_ATTRIBUTE}.roles`],\n });\n\n if (_.isNil(doc)) {\n throw new NotFoundError();\n }\n\n const pm = strapi\n .service('admin::permission')\n .createPermissionsManager({ ability, action, model });\n\n if (pm.ability.cannot(pm.action, pm.toSubject(doc))) {\n throw new ForbiddenError();\n }\n\n const docWithoutCreatorRoles = _.omit(doc, `${CREATED_BY_ATTRIBUTE}.roles`);\n\n return { pm, doc: docWithoutCreatorRoles };\n};\n\nmodule.exports = {\n /**\n * Create a/an user record.\n * @return {Object}\n */\n async create(ctx) {\n const { body } = ctx.request;\n const { user: admin, userAbility } = ctx.state;\n\n const { email, username } = body;\n\n const pm = strapi.service('admin::permission').createPermissionsManager({\n ability: userAbility,\n action: ACTIONS.create,\n model: userModel,\n });\n\n if (!pm.isAllowed) {\n return ctx.forbidden();\n }\n\n const sanitizedBody = await pm.pickPermittedFieldsOf(body, { subject: userModel });\n\n const advanced = await strapi\n .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' })\n .get();\n\n await validateCreateUserBody(ctx.request.body);\n\n const userWithSameUsername = await strapi.db\n .query('plugin::users-permissions.user')\n .findOne({ where: { username } });\n\n if (userWithSameUsername) {\n throw new ApplicationError('Username already taken');\n }\n\n if (advanced.unique_email) {\n const userWithSameEmail = await strapi.db\n .query('plugin::users-permissions.user')\n .findOne({ where: { email: email.toLowerCase() } });\n\n if (userWithSameEmail) {\n throw new ApplicationError('Email already taken');\n }\n }\n\n const user = {\n ...sanitizedBody,\n provider: 'local',\n [CREATED_BY_ATTRIBUTE]: admin.id,\n [UPDATED_BY_ATTRIBUTE]: admin.id,\n };\n\n user.email = _.toLower(user.email);\n\n try {\n const data = await strapi\n .service('plugin::content-manager.document-manager')\n .create(userModel, { data: user });\n\n const sanitizedData = await pm.sanitizeOutput(data, { action: ACTIONS.read });\n\n ctx.created(sanitizedData);\n } catch (error) {\n throw new ApplicationError(error.message);\n }\n },\n /**\n * Update a/an user record.\n * @return {Object}\n */\n\n async update(ctx) {\n const { id: documentId } = ctx.params;\n const { body } = ctx.request;\n const { user: admin, userAbility } = ctx.state;\n\n const advancedConfigs = await strapi\n .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' })\n .get();\n\n const { email, username, password } = body;\n\n const { pm, doc } = await findEntityAndCheckPermissions(\n userAbility,\n ACTIONS.edit,\n userModel,\n documentId\n );\n\n const user = doc;\n\n await validateUpdateUserBody(ctx.request.body);\n\n if (_.has(body, 'password') && !password && user.provider === 'local') {\n throw new ValidationError('password.notNull');\n }\n\n if (_.has(body, 'username')) {\n const userWithSameUsername = await strapi.db\n .query('plugin::users-permissions.user')\n .findOne({ where: { username } });\n\n if (userWithSameUsername && _.toString(userWithSameUsername.id) !== _.toString(user.id)) {\n throw new ApplicationError('Username already taken');\n }\n }\n\n if (_.has(body, 'email') && advancedConfigs.unique_email) {\n const userWithSameEmail = await strapi.db\n .query('plugin::users-permissions.user')\n .findOne({ where: { email: _.toLower(email) } });\n\n if (userWithSameEmail && _.toString(userWithSameEmail.id) !== _.toString(user.id)) {\n throw new ApplicationError('Email already taken');\n }\n\n body.email = _.toLower(body.email);\n }\n\n const sanitizedData = await pm.pickPermittedFieldsOf(body, { subject: pm.toSubject(user) });\n const updateData = _.omit({ ...sanitizedData, updatedBy: admin.id }, 'createdBy');\n\n const data = await strapi\n .service('plugin::content-manager.document-manager')\n .update(documentId, userModel, {\n data: updateData,\n });\n\n ctx.body = await pm.sanitizeOutput(data, { action: ACTIONS.read });\n },\n};\n","'use strict';\n\nconst auth = require('./auth');\nconst user = require('./user');\nconst role = require('./role');\nconst permissions = require('./permissions');\nconst settings = require('./settings');\nconst contentmanageruser = require('./content-manager-user');\n\nmodule.exports = {\n auth,\n user,\n role,\n permissions,\n settings,\n contentmanageruser,\n};\n","'use strict';\n\nmodule.exports = {\n default: ({ env }) => ({\n jwtSecret: env('JWT_SECRET'),\n jwt: {\n expiresIn: '30d',\n },\n ratelimit: {\n interval: 60000,\n max: 10,\n },\n layout: {\n user: {\n actions: {\n create: 'contentManagerUser.create', // Use the User plugin's controller.\n update: 'contentManagerUser.update',\n },\n },\n },\n callback: {\n validate(callback, provider) {\n let uCallback;\n let uProviderCallback;\n\n try {\n uCallback = new URL(callback);\n uProviderCallback = new URL(provider.callback);\n } catch {\n throw new Error('The callback is not a valid URL');\n }\n\n // Make sure the different origin matches\n if (uCallback.origin !== uProviderCallback.origin) {\n throw new Error(\n `Forbidden callback provided: origins don't match. Please verify your config.`\n );\n }\n\n // Make sure the different pathname matches\n if (uCallback.pathname !== uProviderCallback.pathname) {\n throw new Error(\n `Forbidden callback provided: pathname don't match. Please verify your config.`\n );\n }\n\n // NOTE: We're not checking the search parameters on purpose to allow passing different states\n },\n },\n }),\n validator() {},\n};\n","'use strict';\n\nconst register = require('./register');\nconst bootstrap = require('./bootstrap');\nconst contentTypes = require('./content-types');\nconst middlewares = require('./middlewares');\nconst services = require('./services');\nconst routes = require('./routes');\nconst controllers = require('./controllers');\nconst config = require('./config');\n\nmodule.exports = () => ({\n register,\n bootstrap,\n config,\n routes,\n controllers,\n contentTypes,\n middlewares,\n services,\n});\n","import { getDefaultExportFromCjs } from \"\u0000commonjsHelpers.js\";\nimport { __require as requireServer } from \"/home/runner/work/strapi/strapi/packages/plugins/users-permissions/server/index.js\";\nvar serverExports = requireServer();\nexport { serverExports as __moduleExports };\nexport default /*@__PURE__*/getDefaultExportFromCjs(serverExports);"],"names":["removeUserRelationFromRoleEntities","schema","key","attribute","remove","type","target","uid","visitors","require$$0","curry","traverseEntity","async","require$$1","require$$2","sanitizeUserRelationFromRoleEntities","entity","getModel","strapi","bind","defaultSanitizeOutput","pipe","sanitizers","sanitize","getService","name","plugin","service","utils","castArray","map","every","ForbiddenError","UnauthorizedError","errors","getAdvancedSettings","store","get","authenticate","ctx","token","getToken","id","undefined","authenticated","user","fetchAuthenticatedUser","error","advancedSettings","email_confirmation","confirmed","blocked","permissions","Promise","resolve","role","then","findRolePermissions","toContentAPIPermission","ability","contentAPI","engine","generateAbility","state","credentials","publicPermissions","findPublicPermissions","length","err","verify","auth","config","scope","isAllowed","can","usersPermissions","me","nexus","objectType","definition","t","nonNull","string","boolean","field","meRole","registerInput","inputObjectType","loginInput","default","passwordPayload","loginPayload","createRolePayload","updateRolePayload","deleteRolePayload","usersPermissionsUserUID","userInput","getContentTypeInputName","naming","userContentType","userInputName","extendInputType","typesFactories","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","types","context","factory","args","parent","Error","queries","extendType","toPlainObject","usersPermissionsRoleUID","createRole","roleContentType","roleInputName","data","description","koaContext","request","body","controller","ok","updateRole","params","deleteRole","getOr","checkBadRequest","contextBody","statusCode","errorMessage","exception","code","createUser","getEntityResponseName","responseName","create","value","info","resourceUID","updateUser","update","deleteUser","destroy","login","input","provider","callback","output","jwt","register","forgotPassword","email","resetPassword","password","passwordConfirmation","changePassword","currentPassword","emailConfirmation","confirmation","query","userUID","roleUID","mutations","getCreateMutationTypeName","getUpdateMutationTypeName","getDeleteMutationTypeName","require$$10","require$$11","getConfig","Object","entries","resolversConfigs","getTypes","getQueries","getMutations","getResolversConfig","graphql","graphQLConfig","extensionService","isShadowCRUDEnabled","shadowCRUD","disableQueries","disableMutations","actionsToDisable","disableActions","use","resolversConfig","fs","path","authStrategy","add","specPath","join","__dirname","spec","readFileSync","registerOverride","pluginOrigin","excludeFromGeneration","usersPermissionsActions","actions","section","displayName","subCategory","pluginName","aliases","actionId","subjects","crypto","_","initGrant","pluginStore","allProviders","getAll","grantConfig","reduce","acc","icon","enabled","prevGrantConfig","isEqual","keys","forEach","merge","set","initEmails","reset_password","display","options","from","response_email","object","message","initAdvancedOptions","unique_email","allow_register","email_reset_password","email_confirmation_redirection","default_role","bootstrap","actionProvider","registerMany","initialize","process","env","NODE_ENV","jwtSecret","randomBytes","toString","JWT_SECRET","envPath","ENV_PATH","appendFile","log","permission","collectionName","singularName","pluralName","pluginOptions","visible","attributes","action","required","configurable","relation","inversedBy","minLength","unique","mappedBy","users","schemaConfig","resetPasswordToken","hidden","confirmationToken","timestamps","username","private","searchable","contentTypes","isString","has","toLower","RateLimitError","rateLimit","next","rateLimitConfig","RateLimit","userIdentifier","requestPath","normalize","loadConfig","interval","min","max","prefixKey","ip","handler","middleware","middlewares","jwt_1","header","authorization","parts","split","toLowerCase","issue","payload","jwtOptions","defaults","sign","clone","toJSON","reject","tokenPayload","urlJoin","providers","getProfile","accessToken","access_token","oauth_token","run","connect","profile","db","findMany","where","find","isEmpty","defaultRole","findOne","newUser","createdUser","buildRedirectUri","apiPrefix","bcrypt","toNumber","USER_MODEL_UID","count","ensureHashedPasswords","values","rounds","hash","populate","edit","userId","fetch","transform","$and","fetchAll","delete","validatePassword","compare","sendConfirmationEmail","userPermissionService","userSchema","settings","storeEmail","sanitizedUserInfo","template","URL","SERVER_URL","ADMIN_URL","USER","CODE","send","to","replyTo","subject","text","html","NotFoundError","snakeCase","deburr","omit","createPromises","flatMap","typeName","controllers","controllerName","actionName","actionID","push","all","roleID","allActions","getActions","policy","roles","sort","nb_users","pick","newActions","oldActions","toDelete","includes","toCreate","filter","permissionInfo","publicRoleID","prop","createStrictInterpolationRegExp","objects","DEFAULT_PERMISSIONS","roleType","transformRoutePrefixFor","route","prefix","defaultEnable","actionMap","isContentApi","Symbol","for","apis","api","apiName","contentApiActions","pickBy","mapValues","plugins","getRoutes","routesMap","routes","transformPrefix","syncPermissions","dbPermissions","permissionsFoundInDB","uniq","appActions","pluginsActions","difference","roleCount","updateUserRole","layout","allowedTemplateVariables","keysDeep","interpolate","evaluate","escape","e","ApplicationError","strict","assert","urljoin","jwkToPem","getCognitoPayload","idToken","jwksUrl","purest","kid","decode","complete","cognito","discovery","origin","pathname","jwk","jwkKid","pem","decodedToken","algorithms","initProviders","baseURL","discord","secret","callbackUrl","authCallback","discriminator","facebook","qs","fields","google","github","headers","userBody","emailBody","Array","isArray","primary","microsoft","userPrincipalName","twitter","oauth","consumer_key","consumer_secret","access_secret","screen_name","include_email","instagram","vk","raw","user_id","v","response","last_name","first_name","twitch","Authorization","linkedin","linkedIn","localizedFirstName","elements","emailAddress","subdomain","jwksurl","id_token","reddit","version","auth0","nickname","replace","cas","strapiusername","sub","strapiemail","warn","JSON","stringify","patreon","URLSearchParams","patreonData","full_name","keycloak","preferred_username","providersRegistry","server","url","authProviders","authProvider","PUBLIC_ROLE_FILTER","load","services","method","policies","permissionsRoutes","settingsRoutes","roleRoutes","admin","authRoutes","userRoutes","contentApi","yup","validateYupSchema","callbackSchema","identifier","createRegisterSchema","test","isValid","createError","sendEmailConfirmationSchema","validateEmailConfirmationSchema","forgotPasswordSchema","noUnknown","createResetPasswordSchema","oneOf","ref","createChangePasswordSchema","validateCallbackBody","validateRegisterBody","validateSendEmailConfirmationBody","validateEmailConfirmationBody","validateForgotPasswordBody","validateResetPasswordBody","validateChangePasswordBody","concat","compact","ValidationError","sanitizeUser","grantSettings","grantProvider","$or","validPassword","requiresConfirmation","validations","grant","koa","startsWith","queryCustomCallback","dynamicSessionCallback","customCallback","validate","validateCallback","redirect_uri","emailSettings","userInfo","resetPasswordSettings","TOKEN","emailObject","emailToSend","alwaysAllowedKeys","allowedKeys","allowedFields","invalidKeys","identifierFilter","conflictingUserCount","sanitizedUser","returnUser","userService","jwtService","filters","redirect","sendEmailConfirmation","sent","deleteRoleSchema","shape","strapiID","createUserBodySchema","lazy","array","of","updateUserBodySchema","disconnect","disconnectValue","validateCreateUserBody","validateUpdateUserBody","validateDeleteRoleBody","sanitizeOutput","validateQuery","sanitizeQuery","advanced","userWithSameUsername","userWithSameEmail","sanitizedData","created","advancedConfigs","updateData","sanitizedQuery","authUser","unauthorized","sanitizeLocalizationFields","notFound","safeRole","safeRoles","publicRole","getPermissions","getPolicies","without","trim","createLooseInterpolationRegExp","invalidPatternsRegexes","authorizedKeys","matchAll","pattern","src","matches","match","regexPatternWithGlobal","RegExp","exec","group","isValidEmailTemplate","reg","interpolation","loose","strictMatches","looseMatches","emailTemplate","getEmailTemplate","updateEmailTemplate","emailTemplates","updateAdvancedSettings","getProviders","redirectUri","updateProviders","contentTypesUtils","UPDATED_BY_ATTRIBUTE","CREATED_BY_ATTRIBUTE","constants","userModel","ACTIONS","read","findEntityAndCheckPermissions","model","doc","isNil","pm","createPermissionsManager","cannot","toSubject","docWithoutCreatorRoles","contentManagerUser","userAbility","forbidden","sanitizedBody","pickPermittedFieldsOf","documentId","updatedBy","contentmanageruser","expiresIn","ratelimit","uCallback","uProviderCallback","validator","serverExports","requireServer","getDefaultExportFromCjs"],"mappings":"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"}
|