@strapi/plugin-users-permissions 0.0.0-next.e21fe90bf2ab9906267ea6e6ca620bdcc729906c → 0.0.0-next.e2e3ca14971ee768e1a227a209362264fd0132d4
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/admin/src/components/Permissions/PermissionRow/SubCategory.jsx +8 -1
- package/admin/src/components/Policies/index.jsx +1 -0
- package/admin/src/components/UsersPermissions/index.jsx +1 -0
- package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +2 -1
- package/admin/src/pages/Providers/index.jsx +74 -76
- package/admin/src/pages/Roles/pages/CreatePage.jsx +20 -7
- package/admin/src/pages/Roles/pages/EditPage.jsx +12 -7
- package/admin/src/pages/Roles/pages/ListPage/index.jsx +91 -93
- package/admin/src/translations/en.json +1 -0
- package/admin/src/utils/formatPluginName.js +1 -1
- package/dist/admin/components/FormModal/Input/index.js.map +1 -1
- package/dist/admin/components/FormModal/Input/index.mjs.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.js +3 -1
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.js.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs +3 -1
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/index.js.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/index.mjs.map +1 -1
- package/dist/admin/components/Policies/index.js +1 -0
- package/dist/admin/components/Policies/index.js.map +1 -1
- package/dist/admin/components/Policies/index.mjs +1 -0
- package/dist/admin/components/Policies/index.mjs.map +1 -1
- package/dist/admin/components/UsersPermissions/index.js +1 -0
- package/dist/admin/components/UsersPermissions/index.js.map +1 -1
- package/dist/admin/components/UsersPermissions/index.mjs +1 -0
- package/dist/admin/components/UsersPermissions/index.mjs.map +1 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.js +2 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.js.map +1 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs +2 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs.map +1 -1
- package/dist/admin/pages/Providers/index.js +84 -88
- package/dist/admin/pages/Providers/index.js.map +1 -1
- package/dist/admin/pages/Providers/index.mjs +84 -88
- package/dist/admin/pages/Providers/index.mjs.map +1 -1
- package/dist/admin/pages/Roles/pages/CreatePage.js +14 -1
- package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -1
- package/dist/admin/pages/Roles/pages/CreatePage.mjs +16 -3
- package/dist/admin/pages/Roles/pages/CreatePage.mjs.map +1 -1
- package/dist/admin/pages/Roles/pages/EditPage.js +13 -3
- package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -1
- package/dist/admin/pages/Roles/pages/EditPage.mjs +14 -4
- package/dist/admin/pages/Roles/pages/EditPage.mjs.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.mjs.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.js +95 -99
- package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.mjs +95 -99
- package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -1
- package/dist/admin/translations/en.json.js +1 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +1 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/formatPluginName.js +1 -1
- package/dist/admin/utils/formatPluginName.js.map +1 -1
- package/dist/admin/utils/formatPluginName.mjs +1 -1
- package/dist/admin/utils/formatPluginName.mjs.map +1 -1
- package/dist/admin/utils/getTrad.js.map +1 -1
- package/dist/admin/utils/getTrad.mjs.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
- package/dist/server/bootstrap/index.js +28 -7
- package/dist/server/bootstrap/index.js.map +1 -1
- package/dist/server/bootstrap/index.mjs +28 -7
- package/dist/server/bootstrap/index.mjs.map +1 -1
- package/dist/server/config.js +16 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs +16 -0
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/controllers/auth.js +204 -3
- package/dist/server/controllers/auth.js.map +1 -1
- package/dist/server/controllers/auth.mjs +204 -3
- package/dist/server/controllers/auth.mjs.map +1 -1
- package/dist/server/controllers/content-manager-user.js +3 -3
- package/dist/server/controllers/content-manager-user.js.map +1 -1
- package/dist/server/controllers/content-manager-user.mjs +3 -3
- package/dist/server/controllers/content-manager-user.mjs.map +1 -1
- package/dist/server/controllers/validation/user.js +6 -1
- package/dist/server/controllers/validation/user.js.map +1 -1
- package/dist/server/controllers/validation/user.mjs +6 -1
- package/dist/server/controllers/validation/user.mjs.map +1 -1
- package/dist/server/graphql/resolvers-configs.js.map +1 -1
- package/dist/server/graphql/resolvers-configs.mjs.map +1 -1
- package/dist/server/middlewares/rateLimit.js.map +1 -1
- package/dist/server/middlewares/rateLimit.mjs.map +1 -1
- package/dist/server/routes/content-api/auth.js +155 -91
- package/dist/server/routes/content-api/auth.js.map +1 -1
- package/dist/server/routes/content-api/auth.mjs +155 -91
- package/dist/server/routes/content-api/auth.mjs.map +1 -1
- package/dist/server/routes/content-api/index.js +11 -9
- package/dist/server/routes/content-api/index.js.map +1 -1
- package/dist/server/routes/content-api/index.mjs +11 -9
- package/dist/server/routes/content-api/index.mjs.map +1 -1
- package/dist/server/routes/content-api/permissions.js +14 -7
- package/dist/server/routes/content-api/permissions.js.map +1 -1
- package/dist/server/routes/content-api/permissions.mjs +14 -7
- package/dist/server/routes/content-api/permissions.mjs.map +1 -1
- package/dist/server/routes/content-api/role.js +61 -27
- package/dist/server/routes/content-api/role.js.map +1 -1
- package/dist/server/routes/content-api/role.mjs +61 -27
- package/dist/server/routes/content-api/role.mjs.map +1 -1
- package/dist/server/routes/content-api/user.js +119 -57
- package/dist/server/routes/content-api/user.js.map +1 -1
- package/dist/server/routes/content-api/user.mjs +119 -57
- package/dist/server/routes/content-api/user.mjs.map +1 -1
- package/dist/server/routes/content-api/validation.js +217 -0
- package/dist/server/routes/content-api/validation.js.map +1 -0
- package/dist/server/routes/content-api/validation.mjs +215 -0
- package/dist/server/routes/content-api/validation.mjs.map +1 -0
- package/dist/server/services/constants.js +19 -0
- package/dist/server/services/constants.js.map +1 -0
- package/dist/server/services/constants.mjs +17 -0
- package/dist/server/services/constants.mjs.map +1 -0
- package/dist/server/services/jwt.js +45 -2
- package/dist/server/services/jwt.js.map +1 -1
- package/dist/server/services/jwt.mjs +45 -2
- package/dist/server/services/jwt.mjs.map +1 -1
- package/dist/server/services/providers-registry.js.map +1 -1
- package/dist/server/services/providers-registry.mjs.map +1 -1
- package/dist/server/services/role.js.map +1 -1
- package/dist/server/services/role.mjs.map +1 -1
- package/dist/server/services/user.js +29 -20
- package/dist/server/services/user.js.map +1 -1
- package/dist/server/services/user.mjs +29 -20
- package/dist/server/services/user.mjs.map +1 -1
- package/dist/server/services/users-permissions.js +4 -3
- package/dist/server/services/users-permissions.js.map +1 -1
- package/dist/server/services/users-permissions.mjs +4 -3
- package/dist/server/services/users-permissions.mjs.map +1 -1
- package/package.json +9 -8
- package/server/bootstrap/index.js +31 -0
- package/server/config.js +22 -0
- package/server/controllers/auth.js +248 -8
- package/server/controllers/content-manager-user.js +3 -4
- package/server/controllers/validation/user.js +12 -1
- package/server/routes/content-api/auth.js +119 -71
- package/server/routes/content-api/index.js +11 -4
- package/server/routes/content-api/permissions.js +14 -7
- package/server/routes/content-api/role.js +57 -27
- package/server/routes/content-api/user.js +108 -51
- package/server/routes/content-api/validation.js +250 -0
- package/server/services/constants.js +9 -0
- package/server/services/jwt.js +50 -2
- package/server/services/user.js +11 -0
- package/server/services/users-permissions.js +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-manager-user.mjs","sources":["../../../server/controllers/content-manager-user.js"],"sourcesContent":["'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"],"names":["_","require$$0","contentTypes","contentTypesUtils","require$$1","ApplicationError","ValidationError","NotFoundError","ForbiddenError","errors","validateCreateUserBody","validateUpdateUserBody","require$$2","UPDATED_BY_ATTRIBUTE","CREATED_BY_ATTRIBUTE","constants","userModel","ACTIONS","read","create","edit","delete","findEntityAndCheckPermissions","ability","action","model","id","doc","strapi","service","findOne","populate","isNil","pm","createPermissionsManager","cannot","toSubject","docWithoutCreatorRoles","omit","contentManagerUser","ctx","body","request","user","admin","userAbility","state","email","username","isAllowed","forbidden","sanitizedBody","pickPermittedFieldsOf","subject","advanced","store","type","name","key","get","userWithSameUsername","db","query","where","unique_email","userWithSameEmail","toLowerCase","provider","toLower","data","sanitizedData","sanitizeOutput","created","error","message","update","documentId","params","advancedConfigs","password","has","toString","updateData","updatedBy"],"mappings":";;;;;;;;;AAEA,IAAA,MAAMA,CAAIC,GAAAA,UAAAA;AACV,IAAA,MAAM,EAAEC,YAAAA,EAAcC,iBAAiB,EAAE,GAAGC,UAAAA;IAC5C,MAAM,EAAEC,gBAAgB,EAAEC,eAAe,EAAEC,aAAa,EAAEC,cAAc,EAAE,GACxEJ,UAAAA,CAAyBK,MAAM;AACjC,IAAA,MAAM,EAAEC,sBAAsB,EAAEC,sBAAsB,EAAE,GAAGC,WAAAA,EAAAA;AAE3D,IAAA,MAAM,EAAEC,oBAAoB,EAAEC,oBAAoB,EAAE,GAAGX,kBAAkBY,SAAS;AAElF,IAAA,MAAMC,SAAY,GAAA,gCAAA;AAClB,IAAA,MAAMC,OAAU,GAAA;QACdC,IAAM,EAAA,uCAAA;QACNC,MAAQ,EAAA,yCAAA;QACRC,IAAM,EAAA,yCAAA;QACNC,MAAQ,EAAA;AACV,KAAA;AAEA,IAAA,MAAMC,6BAAgC,GAAA,OAAOC,OAASC,EAAAA,MAAAA,EAAQC,KAAOC,EAAAA,EAAAA,GAAAA;QACnE,MAAMC,GAAAA,GAAM,MAAMC,MAAOC,CAAAA,OAAO,CAAC,0CAA4CC,CAAAA,CAAAA,OAAO,CAACJ,EAAAA,EAAID,KAAO,EAAA;YAC9FM,QAAU,EAAA;gBAAC,CAAC,EAAEjB,oBAAqB,CAAA,MAAM;AAAE;AAC/C,SAAA,CAAA;QAEE,IAAId,CAAAA,CAAEgC,KAAK,CAACL,GAAM,CAAA,EAAA;AAChB,YAAA,MAAM,IAAIpB,aAAAA,EAAAA;AACX;AAED,QAAA,MAAM0B,KAAKL,MACRC,CAAAA,OAAO,CAAC,mBAAA,CAAA,CACRK,wBAAwB,CAAC;AAAEX,YAAAA,OAAAA;AAASC,YAAAA,MAAAA;AAAQC,YAAAA;AAAO,SAAA,CAAA;QAEtD,IAAIQ,EAAAA,CAAGV,OAAO,CAACY,MAAM,CAACF,EAAGT,CAAAA,MAAM,EAAES,EAAAA,CAAGG,SAAS,CAACT,GAAO,CAAA,CAAA,EAAA;AACnD,YAAA,MAAM,IAAInB,cAAAA,EAAAA;AACX;QAED,MAAM6B,sBAAAA,GAAyBrC,EAAEsC,IAAI,CAACX,KAAK,CAAC,EAAEb,oBAAqB,CAAA,MAAM,CAAC,CAAA;QAE1E,OAAO;AAAEmB,YAAAA,EAAAA;YAAIN,GAAKU,EAAAA;;AACpB,KAAA;IAEAE,kBAAiB,GAAA;AACjB;;;OAIE,MAAMpB,QAAOqB,GAAG,EAAA;AACd,YAAA,MAAM,EAAEC,IAAI,EAAE,GAAGD,IAAIE,OAAO;YAC5B,MAAM,EAAEC,MAAMC,KAAK,EAAEC,WAAW,EAAE,GAAGL,IAAIM,KAAK;AAE9C,YAAA,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGP,IAAAA;AAE5B,YAAA,MAAMR,KAAKL,MAAOC,CAAAA,OAAO,CAAC,mBAAA,CAAA,CAAqBK,wBAAwB,CAAC;gBACtEX,OAASsB,EAAAA,WAAAA;AACTrB,gBAAAA,MAAAA,EAAQP,QAAQE,MAAM;gBACtBM,KAAOT,EAAAA;AACb,aAAA,CAAA;YAEI,IAAI,CAACiB,EAAGgB,CAAAA,SAAS,EAAE;AACjB,gBAAA,OAAOT,IAAIU,SAAS,EAAA;AACrB;AAED,YAAA,MAAMC,aAAgB,GAAA,MAAMlB,EAAGmB,CAAAA,qBAAqB,CAACX,IAAM,EAAA;gBAAEY,OAASrC,EAAAA;AAAS,aAAA,CAAA;AAE/E,YAAA,MAAMsC,QAAW,GAAA,MAAM1B,MACpB2B,CAAAA,KAAK,CAAC;gBAAEC,IAAM,EAAA,QAAA;gBAAUC,IAAM,EAAA,mBAAA;gBAAqBC,GAAK,EAAA;eACxDC,GAAG,EAAA;AAEN,YAAA,MAAMjD,sBAAuB8B,CAAAA,GAAAA,CAAIE,OAAO,CAACD,IAAI,CAAA;YAE7C,MAAMmB,oBAAAA,GAAuB,MAAMhC,MAAOiC,CAAAA,EAAE,CACzCC,KAAK,CAAC,gCACNhC,CAAAA,CAAAA,OAAO,CAAC;gBAAEiC,KAAO,EAAA;AAAEf,oBAAAA;AAAQ;AAAI,aAAA,CAAA;AAElC,YAAA,IAAIY,oBAAsB,EAAA;AACxB,gBAAA,MAAM,IAAIvD,gBAAiB,CAAA,wBAAA,CAAA;AAC5B;YAED,IAAIiD,QAAAA,CAASU,YAAY,EAAE;gBACzB,MAAMC,iBAAAA,GAAoB,MAAMrC,MAAOiC,CAAAA,EAAE,CACtCC,KAAK,CAAC,gCACNhC,CAAAA,CAAAA,OAAO,CAAC;oBAAEiC,KAAO,EAAA;AAAEhB,wBAAAA,KAAAA,EAAOA,MAAMmB,WAAW;AAAI;AAAA,iBAAA,CAAA;AAElD,gBAAA,IAAID,iBAAmB,EAAA;AACrB,oBAAA,MAAM,IAAI5D,gBAAiB,CAAA,qBAAA,CAAA;AAC5B;AACF;AAED,YAAA,MAAMsC,IAAO,GAAA;AACX,gBAAA,GAAGQ,aAAa;gBAChBgB,QAAU,EAAA,OAAA;gBACV,CAACrD,oBAAAA,GAAuB8B,KAAAA,CAAMlB,EAAE;gBAChC,CAACb,oBAAAA,GAAuB+B,KAAAA,CAAMlB;AACpC,aAAA;AAEIiB,YAAAA,IAAAA,CAAKI,KAAK,GAAG/C,CAAAA,CAAEoE,OAAO,CAACzB,KAAKI,KAAK,CAAA;YAEjC,IAAI;gBACF,MAAMsB,IAAAA,GAAO,MAAMzC,MAChBC,CAAAA,OAAO,CAAC,0CACRV,CAAAA,CAAAA,MAAM,CAACH,SAAW,EAAA;oBAAEqD,IAAM1B,EAAAA;AAAM,iBAAA,CAAA;AAEnC,gBAAA,MAAM2B,aAAgB,GAAA,MAAMrC,EAAGsC,CAAAA,cAAc,CAACF,IAAM,EAAA;AAAE7C,oBAAAA,MAAAA,EAAQP,QAAQC;AAAI,iBAAA,CAAA;AAE1EsB,gBAAAA,GAAAA,CAAIgC,OAAO,CAACF,aAAAA,CAAAA;AACb,aAAA,CAAC,OAAOG,KAAO,EAAA;gBACd,MAAM,IAAIpE,gBAAiBoE,CAAAA,KAAAA,CAAMC,OAAO,CAAA;AACzC;AACF,SAAA;AACH;;;OAKE,MAAMC,QAAOnC,GAAG,EAAA;AACd,YAAA,MAAM,EAAEd,EAAIkD,EAAAA,UAAU,EAAE,GAAGpC,IAAIqC,MAAM;AACrC,YAAA,MAAM,EAAEpC,IAAI,EAAE,GAAGD,IAAIE,OAAO;YAC5B,MAAM,EAAEC,MAAMC,KAAK,EAAEC,WAAW,EAAE,GAAGL,IAAIM,KAAK;AAE9C,YAAA,MAAMgC,eAAkB,GAAA,MAAMlD,MAC3B2B,CAAAA,KAAK,CAAC;gBAAEC,IAAM,EAAA,QAAA;gBAAUC,IAAM,EAAA,mBAAA;gBAAqBC,GAAK,EAAA;eACxDC,GAAG,EAAA;AAEN,YAAA,MAAM,EAAEZ,KAAK,EAAEC,QAAQ,EAAE+B,QAAQ,EAAE,GAAGtC,IAAAA;AAEtC,YAAA,MAAM,EAAER,EAAE,EAAEN,GAAG,EAAE,GAAG,MAAML,6BAAAA,CACxBuB,WACA5B,EAAAA,OAAAA,CAAQG,IAAI,EACZJ,SACA4D,EAAAA,UAAAA,CAAAA;AAGF,YAAA,MAAMjC,IAAOhB,GAAAA,GAAAA;AAEb,YAAA,MAAMhB,sBAAuB6B,CAAAA,GAAAA,CAAIE,OAAO,CAACD,IAAI,CAAA;YAE7C,IAAIzC,CAAAA,CAAEgF,GAAG,CAACvC,IAAM,EAAA,UAAA,CAAA,IAAe,CAACsC,QAAYpC,IAAAA,IAAAA,CAAKwB,QAAQ,KAAK,OAAS,EAAA;AACrE,gBAAA,MAAM,IAAI7D,eAAgB,CAAA,kBAAA,CAAA;AAC3B;AAED,YAAA,IAAIN,CAAEgF,CAAAA,GAAG,CAACvC,IAAAA,EAAM,UAAa,CAAA,EAAA;gBAC3B,MAAMmB,oBAAAA,GAAuB,MAAMhC,MAAOiC,CAAAA,EAAE,CACzCC,KAAK,CAAC,gCACNhC,CAAAA,CAAAA,OAAO,CAAC;oBAAEiC,KAAO,EAAA;AAAEf,wBAAAA;AAAQ;AAAI,iBAAA,CAAA;AAElC,gBAAA,IAAIY,oBAAwB5D,IAAAA,CAAAA,CAAEiF,QAAQ,CAACrB,oBAAqBlC,CAAAA,EAAE,CAAM1B,KAAAA,CAAAA,CAAEiF,QAAQ,CAACtC,IAAKjB,CAAAA,EAAE,CAAG,EAAA;AACvF,oBAAA,MAAM,IAAIrB,gBAAiB,CAAA,wBAAA,CAAA;AAC5B;AACF;AAED,YAAA,IAAIL,EAAEgF,GAAG,CAACvC,MAAM,OAAYqC,CAAAA,IAAAA,eAAAA,CAAgBd,YAAY,EAAE;gBACxD,MAAMC,iBAAAA,GAAoB,MAAMrC,MAAOiC,CAAAA,EAAE,CACtCC,KAAK,CAAC,gCACNhC,CAAAA,CAAAA,OAAO,CAAC;oBAAEiC,KAAO,EAAA;wBAAEhB,KAAO/C,EAAAA,CAAAA,CAAEoE,OAAO,CAACrB,KAAAA;AAAQ;AAAA,iBAAA,CAAA;AAE/C,gBAAA,IAAIkB,iBAAqBjE,IAAAA,CAAAA,CAAEiF,QAAQ,CAAChB,iBAAkBvC,CAAAA,EAAE,CAAM1B,KAAAA,CAAAA,CAAEiF,QAAQ,CAACtC,IAAKjB,CAAAA,EAAE,CAAG,EAAA;AACjF,oBAAA,MAAM,IAAIrB,gBAAiB,CAAA,qBAAA,CAAA;AAC5B;AAEDoC,gBAAAA,IAAAA,CAAKM,KAAK,GAAG/C,CAAAA,CAAEoE,OAAO,CAAC3B,KAAKM,KAAK,CAAA;AAClC;AAED,YAAA,MAAMuB,aAAgB,GAAA,MAAMrC,EAAGmB,CAAAA,qBAAqB,CAACX,IAAM,EAAA;gBAAEY,OAASpB,EAAAA,EAAAA,CAAGG,SAAS,CAACO,IAAAA;AAAO,aAAA,CAAA;YAC1F,MAAMuC,UAAAA,GAAalF,CAAEsC,CAAAA,IAAI,CAAC;AAAE,gBAAA,GAAGgC,aAAa;AAAEa,gBAAAA,SAAAA,EAAWvC,MAAMlB;aAAM,EAAA,WAAA,CAAA;YAErE,MAAM2C,IAAAA,GAAO,MAAMzC,MAChBC,CAAAA,OAAO,CAAC,0CACR8C,CAAAA,CAAAA,MAAM,CAACC,UAAAA,EAAY5D,SAAW,EAAA;gBAC7BqD,IAAMa,EAAAA;AACd,aAAA,CAAA;AAEI1C,YAAAA,GAAAA,CAAIC,IAAI,GAAG,MAAMR,EAAGsC,CAAAA,cAAc,CAACF,IAAM,EAAA;AAAE7C,gBAAAA,MAAAA,EAAQP,QAAQC;AAAI,aAAA,CAAA;AAChE;AACH,KAAA;;;;;;"}
|
|
1
|
+
{"version":3,"file":"content-manager-user.mjs","sources":["../../../server/controllers/content-manager-user.js"],"sourcesContent":["'use strict';\n\nconst _ = require('lodash');\nconst { contentTypes: contentTypesUtils } = require('@strapi/utils');\nconst { ApplicationError, NotFoundError, ForbiddenError } = 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 == null || password === '')) {\n delete body.password;\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"],"names":["_","require$$0","contentTypes","contentTypesUtils","require$$1","ApplicationError","NotFoundError","ForbiddenError","errors","validateCreateUserBody","validateUpdateUserBody","require$$2","UPDATED_BY_ATTRIBUTE","CREATED_BY_ATTRIBUTE","constants","userModel","ACTIONS","read","create","edit","delete","findEntityAndCheckPermissions","ability","action","model","id","doc","strapi","service","findOne","populate","isNil","pm","createPermissionsManager","cannot","toSubject","docWithoutCreatorRoles","omit","contentManagerUser","ctx","body","request","user","admin","userAbility","state","email","username","isAllowed","forbidden","sanitizedBody","pickPermittedFieldsOf","subject","advanced","store","type","name","key","get","userWithSameUsername","db","query","where","unique_email","userWithSameEmail","toLowerCase","provider","toLower","data","sanitizedData","sanitizeOutput","created","error","message","update","documentId","params","advancedConfigs","password","has","toString","updateData","updatedBy"],"mappings":"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"}
|
|
@@ -24,7 +24,12 @@ function requireUser() {
|
|
|
24
24
|
const updateUserBodySchema = yup.object().shape({
|
|
25
25
|
email: yup.string().email().min(1),
|
|
26
26
|
username: yup.string().min(1),
|
|
27
|
-
password: yup.
|
|
27
|
+
password: yup.mixed().test('password-validation', 'Password must be at least 1 character', function validatePassword(value) {
|
|
28
|
+
if (value == null || value === '') {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
return typeof value === 'string' && value.length >= 1;
|
|
32
|
+
}),
|
|
28
33
|
role: yup.lazy((value)=>typeof value === 'object' ? yup.object().shape({
|
|
29
34
|
connect: yup.array().of(yup.object().shape({
|
|
30
35
|
id: yup.strapiID().required()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","sources":["../../../../server/controllers/validation/user.js"],"sourcesContent":["'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.
|
|
1
|
+
{"version":3,"file":"user.js","sources":["../../../../server/controllers/validation/user.js"],"sourcesContent":["'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\n .mixed()\n .test(\n 'password-validation',\n 'Password must be at least 1 character',\n function validatePassword(value) {\n if (value == null || value === '') {\n return true;\n }\n return typeof value === 'string' && value.length >= 1;\n }\n ),\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"],"names":["yup","validateYupSchema","require$$0","deleteRoleSchema","object","shape","role","strapiID","required","createUserBodySchema","email","string","username","min","password","lazy","value","connect","array","of","id","updateUserBodySchema","mixed","test","validatePassword","length","disconnect","disconnectValue","user","validateCreateUserBody","validateUpdateUserBody","validateDeleteRoleBody"],"mappings":"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"}
|
|
@@ -22,7 +22,12 @@ function requireUser() {
|
|
|
22
22
|
const updateUserBodySchema = yup.object().shape({
|
|
23
23
|
email: yup.string().email().min(1),
|
|
24
24
|
username: yup.string().min(1),
|
|
25
|
-
password: yup.
|
|
25
|
+
password: yup.mixed().test('password-validation', 'Password must be at least 1 character', function validatePassword(value) {
|
|
26
|
+
if (value == null || value === '') {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
return typeof value === 'string' && value.length >= 1;
|
|
30
|
+
}),
|
|
26
31
|
role: yup.lazy((value)=>typeof value === 'object' ? yup.object().shape({
|
|
27
32
|
connect: yup.array().of(yup.object().shape({
|
|
28
33
|
id: yup.strapiID().required()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.mjs","sources":["../../../../server/controllers/validation/user.js"],"sourcesContent":["'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.
|
|
1
|
+
{"version":3,"file":"user.mjs","sources":["../../../../server/controllers/validation/user.js"],"sourcesContent":["'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\n .mixed()\n .test(\n 'password-validation',\n 'Password must be at least 1 character',\n function validatePassword(value) {\n if (value == null || value === '') {\n return true;\n }\n return typeof value === 'string' && value.length >= 1;\n }\n ),\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"],"names":["yup","validateYupSchema","require$$0","deleteRoleSchema","object","shape","role","strapiID","required","createUserBodySchema","email","string","username","min","password","lazy","value","connect","array","of","id","updateUserBodySchema","mixed","test","validatePassword","length","disconnect","disconnectValue","user","validateCreateUserBody","validateUpdateUserBody","validateDeleteRoleBody"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvers-configs.js","sources":["../../../server/graphql/resolvers-configs.js"],"sourcesContent":["'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"],"names":["userUID","roleUID","resolversConfigs","strapi","naming","plugin","service","user","getModel","role","createRole","getCreateMutationTypeName","updateRole","getUpdateMutationTypeName","deleteRole","getDeleteMutationTypeName","createUser","updateUser","deleteUser","auth","scope"],"mappings":";;;;;;;AAEA,IAAA,MAAMA,OAAU,GAAA,gCAAA;AAChB,IAAA,MAAMC,OAAU,GAAA,gCAAA;IAEhBC,gBAAiB,GAAA,CAAC,EAAEC,MAAM,EAAE,GAAA;QAC1B,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAOE,MAAM,CAAC,SAAWC,CAAAA,CAAAA,OAAO,CAAC,OAAA,CAAA;QAEpD,MAAMC,IAAAA,GAAOJ,MAAOK,CAAAA,QAAQ,CAACR,OAAAA,CAAAA;QAC7B,MAAMS,IAAAA,GAAON,MAAOK,CAAAA,QAAQ,CAACP,OAAAA,CAAAA;QAE7B,MAAMS,UAAAA,GAAaN,MAAOO,CAAAA,yBAAyB,CAACF,IAAAA,CAAAA;QACpD,MAAMG,UAAAA,GAAaR,MAAOS,CAAAA,yBAAyB,CAACJ,IAAAA,CAAAA;QACpD,MAAMK,UAAAA,GAAaV,MAAOW,CAAAA,yBAAyB,CAACN,IAAAA,CAAAA;QACpD,MAAMO,UAAAA,GAAaZ,MAAOO,CAAAA,yBAAyB,CAACJ,IAAAA,CAAAA;QACpD,MAAMU,UAAAA,GAAab,MAAOS,CAAAA,yBAAyB,CAACN,IAAAA,CAAAA;QACpD,MAAMW,UAAAA,GAAad,MAAOW,CAAAA,yBAAyB,CAACR,IAAAA,CAAAA;QAEpD,OAAO;;YAEL,gBAAkB,EAAA;gBAAEY,IAAM,EAAA;AAAO,aAAA;YACjC,mBAAqB,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YACpC,yBAA2B,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YAC1C,wBAA0B,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YACzC,4BAA8B,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YAC7C,yBAA2B,EAAA;gBACzBA,IAAM,EAAA;oBACJC,KAAO,EAAA;AACR;AACF,aAAA;;;AAID,YAAA,CAAC,CAAC,SAAS,EAAEV,
|
|
1
|
+
{"version":3,"file":"resolvers-configs.js","sources":["../../../server/graphql/resolvers-configs.js"],"sourcesContent":["'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"],"names":["userUID","roleUID","resolversConfigs","strapi","naming","plugin","service","user","getModel","role","createRole","getCreateMutationTypeName","updateRole","getUpdateMutationTypeName","deleteRole","getDeleteMutationTypeName","createUser","updateUser","deleteUser","auth","scope"],"mappings":";;;;;;;AAEA,IAAA,MAAMA,OAAU,GAAA,gCAAA;AAChB,IAAA,MAAMC,OAAU,GAAA,gCAAA;IAEhBC,gBAAiB,GAAA,CAAC,EAAEC,MAAM,EAAE,GAAA;QAC1B,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAOE,MAAM,CAAC,SAAWC,CAAAA,CAAAA,OAAO,CAAC,OAAA,CAAA;QAEpD,MAAMC,IAAAA,GAAOJ,MAAOK,CAAAA,QAAQ,CAACR,OAAAA,CAAAA;QAC7B,MAAMS,IAAAA,GAAON,MAAOK,CAAAA,QAAQ,CAACP,OAAAA,CAAAA;QAE7B,MAAMS,UAAAA,GAAaN,MAAOO,CAAAA,yBAAyB,CAACF,IAAAA,CAAAA;QACpD,MAAMG,UAAAA,GAAaR,MAAOS,CAAAA,yBAAyB,CAACJ,IAAAA,CAAAA;QACpD,MAAMK,UAAAA,GAAaV,MAAOW,CAAAA,yBAAyB,CAACN,IAAAA,CAAAA;QACpD,MAAMO,UAAAA,GAAaZ,MAAOO,CAAAA,yBAAyB,CAACJ,IAAAA,CAAAA;QACpD,MAAMU,UAAAA,GAAab,MAAOS,CAAAA,yBAAyB,CAACN,IAAAA,CAAAA;QACpD,MAAMW,UAAAA,GAAad,MAAOW,CAAAA,yBAAyB,CAACR,IAAAA,CAAAA;QAEpD,OAAO;;YAEL,gBAAkB,EAAA;gBAAEY,IAAM,EAAA;AAAO,aAAA;YACjC,mBAAqB,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YACpC,yBAA2B,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YAC1C,wBAA0B,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YACzC,4BAA8B,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YAC7C,yBAA2B,EAAA;gBACzBA,IAAM,EAAA;oBACJC,KAAO,EAAA;AACR;AACF,aAAA;;;AAID,YAAA,CAAC,CAAC,SAAS,EAAEV,UAAAA,CAAAA,CAAY,GAAG;gBAAES,IAAM,EAAA;oBAAEC,KAAO,EAAA;wBAAC,CAAGnB,EAAAA,OAAAA,CAAQ,WAAW;AAAE;AAAA;AAAI,aAAA;AAC1E,YAAA,CAAC,CAAC,SAAS,EAAEW,UAAAA,CAAAA,CAAY,GAAG;gBAAEO,IAAM,EAAA;oBAAEC,KAAO,EAAA;wBAAC,CAAGnB,EAAAA,OAAAA,CAAQ,WAAW;AAAE;AAAA;AAAI,aAAA;AAC1E,YAAA,CAAC,CAAC,SAAS,EAAEa,UAAAA,CAAAA,CAAY,GAAG;gBAAEK,IAAM,EAAA;oBAAEC,KAAO,EAAA;wBAAC,CAAGnB,EAAAA,OAAAA,CAAQ,WAAW;AAAE;AAAA;AAAI,aAAA;;AAE1E,YAAA,CAAC,CAAC,SAAS,EAAEe,UAAAA,CAAAA,CAAY,GAAG;gBAAEG,IAAM,EAAA;oBAAEC,KAAO,EAAA;wBAAC,CAAGpB,EAAAA,OAAAA,CAAQ,OAAO;AAAE;AAAA;AAAI,aAAA;AACtE,YAAA,CAAC,CAAC,SAAS,EAAEiB,UAAAA,CAAAA,CAAY,GAAG;gBAAEE,IAAM,EAAA;oBAAEC,KAAO,EAAA;wBAAC,CAAGpB,EAAAA,OAAAA,CAAQ,OAAO;AAAE;AAAA;AAAI,aAAA;AACtE,YAAA,CAAC,CAAC,SAAS,EAAEkB,UAAAA,CAAAA,CAAY,GAAG;gBAAEC,IAAM,EAAA;oBAAEC,KAAO,EAAA;wBAAC,CAAGpB,EAAAA,OAAAA,CAAQ,QAAQ;AAAE;AAAA;AAAI;AAC3E,SAAA;AACA,KAAA;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvers-configs.mjs","sources":["../../../server/graphql/resolvers-configs.js"],"sourcesContent":["'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"],"names":["userUID","roleUID","resolversConfigs","strapi","naming","plugin","service","user","getModel","role","createRole","getCreateMutationTypeName","updateRole","getUpdateMutationTypeName","deleteRole","getDeleteMutationTypeName","createUser","updateUser","deleteUser","auth","scope"],"mappings":";;;;;AAEA,IAAA,MAAMA,OAAU,GAAA,gCAAA;AAChB,IAAA,MAAMC,OAAU,GAAA,gCAAA;IAEhBC,gBAAiB,GAAA,CAAC,EAAEC,MAAM,EAAE,GAAA;QAC1B,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAOE,MAAM,CAAC,SAAWC,CAAAA,CAAAA,OAAO,CAAC,OAAA,CAAA;QAEpD,MAAMC,IAAAA,GAAOJ,MAAOK,CAAAA,QAAQ,CAACR,OAAAA,CAAAA;QAC7B,MAAMS,IAAAA,GAAON,MAAOK,CAAAA,QAAQ,CAACP,OAAAA,CAAAA;QAE7B,MAAMS,UAAAA,GAAaN,MAAOO,CAAAA,yBAAyB,CAACF,IAAAA,CAAAA;QACpD,MAAMG,UAAAA,GAAaR,MAAOS,CAAAA,yBAAyB,CAACJ,IAAAA,CAAAA;QACpD,MAAMK,UAAAA,GAAaV,MAAOW,CAAAA,yBAAyB,CAACN,IAAAA,CAAAA;QACpD,MAAMO,UAAAA,GAAaZ,MAAOO,CAAAA,yBAAyB,CAACJ,IAAAA,CAAAA;QACpD,MAAMU,UAAAA,GAAab,MAAOS,CAAAA,yBAAyB,CAACN,IAAAA,CAAAA;QACpD,MAAMW,UAAAA,GAAad,MAAOW,CAAAA,yBAAyB,CAACR,IAAAA,CAAAA;QAEpD,OAAO;;YAEL,gBAAkB,EAAA;gBAAEY,IAAM,EAAA;AAAO,aAAA;YACjC,mBAAqB,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YACpC,yBAA2B,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YAC1C,wBAA0B,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YACzC,4BAA8B,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YAC7C,yBAA2B,EAAA;gBACzBA,IAAM,EAAA;oBACJC,KAAO,EAAA;AACR;AACF,aAAA;;;AAID,YAAA,CAAC,CAAC,SAAS,EAAEV,
|
|
1
|
+
{"version":3,"file":"resolvers-configs.mjs","sources":["../../../server/graphql/resolvers-configs.js"],"sourcesContent":["'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"],"names":["userUID","roleUID","resolversConfigs","strapi","naming","plugin","service","user","getModel","role","createRole","getCreateMutationTypeName","updateRole","getUpdateMutationTypeName","deleteRole","getDeleteMutationTypeName","createUser","updateUser","deleteUser","auth","scope"],"mappings":";;;;;AAEA,IAAA,MAAMA,OAAU,GAAA,gCAAA;AAChB,IAAA,MAAMC,OAAU,GAAA,gCAAA;IAEhBC,gBAAiB,GAAA,CAAC,EAAEC,MAAM,EAAE,GAAA;QAC1B,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAOE,MAAM,CAAC,SAAWC,CAAAA,CAAAA,OAAO,CAAC,OAAA,CAAA;QAEpD,MAAMC,IAAAA,GAAOJ,MAAOK,CAAAA,QAAQ,CAACR,OAAAA,CAAAA;QAC7B,MAAMS,IAAAA,GAAON,MAAOK,CAAAA,QAAQ,CAACP,OAAAA,CAAAA;QAE7B,MAAMS,UAAAA,GAAaN,MAAOO,CAAAA,yBAAyB,CAACF,IAAAA,CAAAA;QACpD,MAAMG,UAAAA,GAAaR,MAAOS,CAAAA,yBAAyB,CAACJ,IAAAA,CAAAA;QACpD,MAAMK,UAAAA,GAAaV,MAAOW,CAAAA,yBAAyB,CAACN,IAAAA,CAAAA;QACpD,MAAMO,UAAAA,GAAaZ,MAAOO,CAAAA,yBAAyB,CAACJ,IAAAA,CAAAA;QACpD,MAAMU,UAAAA,GAAab,MAAOS,CAAAA,yBAAyB,CAACN,IAAAA,CAAAA;QACpD,MAAMW,UAAAA,GAAad,MAAOW,CAAAA,yBAAyB,CAACR,IAAAA,CAAAA;QAEpD,OAAO;;YAEL,gBAAkB,EAAA;gBAAEY,IAAM,EAAA;AAAO,aAAA;YACjC,mBAAqB,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YACpC,yBAA2B,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YAC1C,wBAA0B,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YACzC,4BAA8B,EAAA;gBAAEA,IAAM,EAAA;AAAO,aAAA;YAC7C,yBAA2B,EAAA;gBACzBA,IAAM,EAAA;oBACJC,KAAO,EAAA;AACR;AACF,aAAA;;;AAID,YAAA,CAAC,CAAC,SAAS,EAAEV,UAAAA,CAAAA,CAAY,GAAG;gBAAES,IAAM,EAAA;oBAAEC,KAAO,EAAA;wBAAC,CAAGnB,EAAAA,OAAAA,CAAQ,WAAW;AAAE;AAAA;AAAI,aAAA;AAC1E,YAAA,CAAC,CAAC,SAAS,EAAEW,UAAAA,CAAAA,CAAY,GAAG;gBAAEO,IAAM,EAAA;oBAAEC,KAAO,EAAA;wBAAC,CAAGnB,EAAAA,OAAAA,CAAQ,WAAW;AAAE;AAAA;AAAI,aAAA;AAC1E,YAAA,CAAC,CAAC,SAAS,EAAEa,UAAAA,CAAAA,CAAY,GAAG;gBAAEK,IAAM,EAAA;oBAAEC,KAAO,EAAA;wBAAC,CAAGnB,EAAAA,OAAAA,CAAQ,WAAW;AAAE;AAAA;AAAI,aAAA;;AAE1E,YAAA,CAAC,CAAC,SAAS,EAAEe,UAAAA,CAAAA,CAAY,GAAG;gBAAEG,IAAM,EAAA;oBAAEC,KAAO,EAAA;wBAAC,CAAGpB,EAAAA,OAAAA,CAAQ,OAAO;AAAE;AAAA;AAAI,aAAA;AACtE,YAAA,CAAC,CAAC,SAAS,EAAEiB,UAAAA,CAAAA,CAAY,GAAG;gBAAEE,IAAM,EAAA;oBAAEC,KAAO,EAAA;wBAAC,CAAGpB,EAAAA,OAAAA,CAAQ,OAAO;AAAE;AAAA;AAAI,aAAA;AACtE,YAAA,CAAC,CAAC,SAAS,EAAEkB,UAAAA,CAAAA,CAAY,GAAG;gBAAEC,IAAM,EAAA;oBAAEC,KAAO,EAAA;wBAAC,CAAGpB,EAAAA,OAAAA,CAAQ,QAAQ;AAAE;AAAA;AAAI;AAC3E,SAAA;AACA,KAAA;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rateLimit.js","sources":["../../../server/middlewares/rateLimit.js"],"sourcesContent":["'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"],"names":["path","require$$0","utils","require$$1","isString","has","toLower","require$$2","RateLimitError","errors","rateLimit","config","strapi","ctx","next","rateLimitConfig","get","enabled","require$$3","RateLimit","userIdentifier","request","body","email","requestPath","normalize","loadConfig","interval","min","max","prefixKey","ip","handler","middleware"],"mappings":";;;;;;;;;;;;AAEA,IAAA,MAAMA,IAAOC,GAAAA,UAAAA;AACb,IAAA,MAAMC,KAAQC,GAAAA,YAAAA;AACd,IAAA,MAAM,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,OAAO,EAAE,GAAGC,UAAAA;AAEnC,IAAA,MAAM,EAAEC,cAAc,EAAE,GAAGN,MAAMO,MAAM;AAEzBC,IAAAA,SAAAA,GACZ,CAACC,MAAQ,EAAA,EAAEC,MAAM,EAAE,GACnB,OAAOC,GAAKC,EAAAA,IAAAA,GAAAA;AACV,YAAA,IAAIC,eAAkBH,GAAAA,MAAAA,CAAOD,MAAM,CAACK,GAAG,CAAC,qCAAA,CAAA;AAExC,YAAA,IAAI,CAACD,eAAiB,EAAA;gBACpBA,eAAkB,GAAA;oBAChBE,OAAS,EAAA;AACjB,iBAAA;AACK;YAED,IAAI,CAACZ,GAAI,CAAA,SAAA,EAAWU,eAAkB,CAAA,EAAA;AACpCA,gBAAAA,eAAAA,CAAgBE,OAAO,GAAG,IAAA;AAC3B;YAED,IAAIF,eAAAA,CAAgBE,OAAO,KAAK,IAAM,EAAA;gBACpC,MAAMP,SAAAA,GAAYQ,WAA0BC,SAAS;gBAErD,MAAMC,cAAAA,GAAiBd,QAAQO,GAAIQ,CAAAA,OAAO,CAACC,IAAI,CAACC,KAAK,CAAK,IAAA,mBAAA;AAC1D,gBAAA,MAAMC,WAAcpB,GAAAA,QAAAA,CAASS,GAAIQ,CAAAA,OAAO,CAACrB,IAAI,CAAA,GACzCM,OAAQN,CAAAA,IAAAA,CAAKyB,SAAS,CAACZ,GAAAA,CAAIQ,OAAO,CAACrB,IAAI,CACvC,CAAA,GAAA,aAAA;AAEJ,gBAAA,MAAM0B,UAAa,GAAA;oBACjBC,QAAU,EAAA;wBAAEC,GAAK,EAAA;AAAG,qBAAA;oBACpBC,GAAK,EAAA,CAAA;
|
|
1
|
+
{"version":3,"file":"rateLimit.js","sources":["../../../server/middlewares/rateLimit.js"],"sourcesContent":["'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"],"names":["path","require$$0","utils","require$$1","isString","has","toLower","require$$2","RateLimitError","errors","rateLimit","config","strapi","ctx","next","rateLimitConfig","get","enabled","require$$3","RateLimit","userIdentifier","request","body","email","requestPath","normalize","loadConfig","interval","min","max","prefixKey","ip","handler","middleware"],"mappings":";;;;;;;;;;;;AAEA,IAAA,MAAMA,IAAOC,GAAAA,UAAAA;AACb,IAAA,MAAMC,KAAQC,GAAAA,YAAAA;AACd,IAAA,MAAM,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,OAAO,EAAE,GAAGC,UAAAA;AAEnC,IAAA,MAAM,EAAEC,cAAc,EAAE,GAAGN,MAAMO,MAAM;AAEzBC,IAAAA,SAAAA,GACZ,CAACC,MAAQ,EAAA,EAAEC,MAAM,EAAE,GACnB,OAAOC,GAAKC,EAAAA,IAAAA,GAAAA;AACV,YAAA,IAAIC,eAAkBH,GAAAA,MAAAA,CAAOD,MAAM,CAACK,GAAG,CAAC,qCAAA,CAAA;AAExC,YAAA,IAAI,CAACD,eAAiB,EAAA;gBACpBA,eAAkB,GAAA;oBAChBE,OAAS,EAAA;AACjB,iBAAA;AACK;YAED,IAAI,CAACZ,GAAI,CAAA,SAAA,EAAWU,eAAkB,CAAA,EAAA;AACpCA,gBAAAA,eAAAA,CAAgBE,OAAO,GAAG,IAAA;AAC3B;YAED,IAAIF,eAAAA,CAAgBE,OAAO,KAAK,IAAM,EAAA;gBACpC,MAAMP,SAAAA,GAAYQ,WAA0BC,SAAS;gBAErD,MAAMC,cAAAA,GAAiBd,QAAQO,GAAIQ,CAAAA,OAAO,CAACC,IAAI,CAACC,KAAK,CAAK,IAAA,mBAAA;AAC1D,gBAAA,MAAMC,WAAcpB,GAAAA,QAAAA,CAASS,GAAIQ,CAAAA,OAAO,CAACrB,IAAI,CAAA,GACzCM,OAAQN,CAAAA,IAAAA,CAAKyB,SAAS,CAACZ,GAAAA,CAAIQ,OAAO,CAACrB,IAAI,CACvC,CAAA,GAAA,aAAA;AAEJ,gBAAA,MAAM0B,UAAa,GAAA;oBACjBC,QAAU,EAAA;wBAAEC,GAAK,EAAA;AAAG,qBAAA;oBACpBC,GAAK,EAAA,CAAA;oBACLC,SAAW,EAAA,CAAA,EAAGV,cAAe,CAAA,CAAC,EAAEI,WAAAA,CAAY,CAAC,EAAEX,GAAIQ,CAAAA,OAAO,CAACU,EAAE,CAAE,CAAA;AAC/DC,oBAAAA,OAAAA,CAAAA,GAAAA;AACE,wBAAA,MAAM,IAAIxB,cAAAA,EAAAA;AACX,qBAAA;AACD,oBAAA,GAAGO,eAAe;AAClB,oBAAA,GAAGJ;AACX,iBAAA;AAEM,gBAAA,OAAOD,SAAUuB,CAAAA,UAAU,CAACP,UAAAA,CAAAA,CAAYb,GAAKC,EAAAA,IAAAA,CAAAA;AAC9C;YAED,OAAOA,IAAAA,EAAAA;AACR,SAAA;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rateLimit.mjs","sources":["../../../server/middlewares/rateLimit.js"],"sourcesContent":["'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"],"names":["path","require$$0","utils","require$$1","isString","has","toLower","require$$2","RateLimitError","errors","rateLimit","config","strapi","ctx","next","rateLimitConfig","get","enabled","require$$3","RateLimit","userIdentifier","request","body","email","requestPath","normalize","loadConfig","interval","min","max","prefixKey","ip","handler","middleware"],"mappings":";;;;;;;;;;AAEA,IAAA,MAAMA,IAAOC,GAAAA,UAAAA;AACb,IAAA,MAAMC,KAAQC,GAAAA,YAAAA;AACd,IAAA,MAAM,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,OAAO,EAAE,GAAGC,UAAAA;AAEnC,IAAA,MAAM,EAAEC,cAAc,EAAE,GAAGN,MAAMO,MAAM;AAEzBC,IAAAA,SAAAA,GACZ,CAACC,MAAQ,EAAA,EAAEC,MAAM,EAAE,GACnB,OAAOC,GAAKC,EAAAA,IAAAA,GAAAA;AACV,YAAA,IAAIC,eAAkBH,GAAAA,MAAAA,CAAOD,MAAM,CAACK,GAAG,CAAC,qCAAA,CAAA;AAExC,YAAA,IAAI,CAACD,eAAiB,EAAA;gBACpBA,eAAkB,GAAA;oBAChBE,OAAS,EAAA;AACjB,iBAAA;AACK;YAED,IAAI,CAACZ,GAAI,CAAA,SAAA,EAAWU,eAAkB,CAAA,EAAA;AACpCA,gBAAAA,eAAAA,CAAgBE,OAAO,GAAG,IAAA;AAC3B;YAED,IAAIF,eAAAA,CAAgBE,OAAO,KAAK,IAAM,EAAA;gBACpC,MAAMP,SAAAA,GAAYQ,WAA0BC,SAAS;gBAErD,MAAMC,cAAAA,GAAiBd,QAAQO,GAAIQ,CAAAA,OAAO,CAACC,IAAI,CAACC,KAAK,CAAK,IAAA,mBAAA;AAC1D,gBAAA,MAAMC,WAAcpB,GAAAA,QAAAA,CAASS,GAAIQ,CAAAA,OAAO,CAACrB,IAAI,CAAA,GACzCM,OAAQN,CAAAA,IAAAA,CAAKyB,SAAS,CAACZ,GAAAA,CAAIQ,OAAO,CAACrB,IAAI,CACvC,CAAA,GAAA,aAAA;AAEJ,gBAAA,MAAM0B,UAAa,GAAA;oBACjBC,QAAU,EAAA;wBAAEC,GAAK,EAAA;AAAG,qBAAA;oBACpBC,GAAK,EAAA,CAAA;
|
|
1
|
+
{"version":3,"file":"rateLimit.mjs","sources":["../../../server/middlewares/rateLimit.js"],"sourcesContent":["'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"],"names":["path","require$$0","utils","require$$1","isString","has","toLower","require$$2","RateLimitError","errors","rateLimit","config","strapi","ctx","next","rateLimitConfig","get","enabled","require$$3","RateLimit","userIdentifier","request","body","email","requestPath","normalize","loadConfig","interval","min","max","prefixKey","ip","handler","middleware"],"mappings":";;;;;;;;;;AAEA,IAAA,MAAMA,IAAOC,GAAAA,UAAAA;AACb,IAAA,MAAMC,KAAQC,GAAAA,YAAAA;AACd,IAAA,MAAM,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,OAAO,EAAE,GAAGC,UAAAA;AAEnC,IAAA,MAAM,EAAEC,cAAc,EAAE,GAAGN,MAAMO,MAAM;AAEzBC,IAAAA,SAAAA,GACZ,CAACC,MAAQ,EAAA,EAAEC,MAAM,EAAE,GACnB,OAAOC,GAAKC,EAAAA,IAAAA,GAAAA;AACV,YAAA,IAAIC,eAAkBH,GAAAA,MAAAA,CAAOD,MAAM,CAACK,GAAG,CAAC,qCAAA,CAAA;AAExC,YAAA,IAAI,CAACD,eAAiB,EAAA;gBACpBA,eAAkB,GAAA;oBAChBE,OAAS,EAAA;AACjB,iBAAA;AACK;YAED,IAAI,CAACZ,GAAI,CAAA,SAAA,EAAWU,eAAkB,CAAA,EAAA;AACpCA,gBAAAA,eAAAA,CAAgBE,OAAO,GAAG,IAAA;AAC3B;YAED,IAAIF,eAAAA,CAAgBE,OAAO,KAAK,IAAM,EAAA;gBACpC,MAAMP,SAAAA,GAAYQ,WAA0BC,SAAS;gBAErD,MAAMC,cAAAA,GAAiBd,QAAQO,GAAIQ,CAAAA,OAAO,CAACC,IAAI,CAACC,KAAK,CAAK,IAAA,mBAAA;AAC1D,gBAAA,MAAMC,WAAcpB,GAAAA,QAAAA,CAASS,GAAIQ,CAAAA,OAAO,CAACrB,IAAI,CAAA,GACzCM,OAAQN,CAAAA,IAAAA,CAAKyB,SAAS,CAACZ,GAAAA,CAAIQ,OAAO,CAACrB,IAAI,CACvC,CAAA,GAAA,aAAA;AAEJ,gBAAA,MAAM0B,UAAa,GAAA;oBACjBC,QAAU,EAAA;wBAAEC,GAAK,EAAA;AAAG,qBAAA;oBACpBC,GAAK,EAAA,CAAA;oBACLC,SAAW,EAAA,CAAA,EAAGV,cAAe,CAAA,CAAC,EAAEI,WAAAA,CAAY,CAAC,EAAEX,GAAIQ,CAAAA,OAAO,CAACU,EAAE,CAAE,CAAA;AAC/DC,oBAAAA,OAAAA,CAAAA,GAAAA;AACE,wBAAA,MAAM,IAAIxB,cAAAA,EAAAA;AACX,qBAAA;AACD,oBAAA,GAAGO,eAAe;AAClB,oBAAA,GAAGJ;AACX,iBAAA;AAEM,gBAAA,OAAOD,SAAUuB,CAAAA,UAAU,CAACP,UAAAA,CAAAA,CAAYb,GAAKC,EAAAA,IAAAA,CAAAA;AAC9C;YAED,OAAOA,IAAAA,EAAAA;AACR,SAAA;;;;;;"}
|
|
@@ -1,102 +1,166 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var validation = require('./validation.js');
|
|
4
|
+
|
|
3
5
|
var auth;
|
|
4
6
|
var hasRequiredAuth;
|
|
5
7
|
function requireAuth() {
|
|
6
8
|
if (hasRequiredAuth) return auth;
|
|
7
9
|
hasRequiredAuth = 1;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
10
|
+
const { UsersPermissionsRouteValidator } = validation.__require();
|
|
11
|
+
auth = (strapi)=>{
|
|
12
|
+
const validator = new UsersPermissionsRouteValidator(strapi);
|
|
13
|
+
return [
|
|
14
|
+
{
|
|
15
|
+
method: 'GET',
|
|
16
|
+
path: '/connect/(.*)',
|
|
17
|
+
handler: 'auth.connect',
|
|
18
|
+
config: {
|
|
19
|
+
middlewares: [
|
|
20
|
+
'plugin::users-permissions.rateLimit'
|
|
21
|
+
],
|
|
22
|
+
prefix: ''
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
method: 'POST',
|
|
27
|
+
path: '/auth/local',
|
|
28
|
+
handler: 'auth.callback',
|
|
29
|
+
config: {
|
|
30
|
+
middlewares: [
|
|
31
|
+
'plugin::users-permissions.rateLimit'
|
|
32
|
+
],
|
|
33
|
+
prefix: ''
|
|
34
|
+
},
|
|
35
|
+
request: {
|
|
36
|
+
body: {
|
|
37
|
+
'application/json': validator.loginBodySchema
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
response: validator.authResponseSchema
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
method: 'POST',
|
|
44
|
+
path: '/auth/local/register',
|
|
45
|
+
handler: 'auth.register',
|
|
46
|
+
config: {
|
|
47
|
+
middlewares: [
|
|
48
|
+
'plugin::users-permissions.rateLimit'
|
|
49
|
+
],
|
|
50
|
+
prefix: ''
|
|
51
|
+
},
|
|
52
|
+
request: {
|
|
53
|
+
body: {
|
|
54
|
+
'application/json': validator.registerBodySchema
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
response: validator.authRegisterResponseSchema
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
method: 'GET',
|
|
61
|
+
path: '/auth/:provider/callback',
|
|
62
|
+
handler: 'auth.callback',
|
|
63
|
+
config: {
|
|
64
|
+
prefix: ''
|
|
65
|
+
},
|
|
66
|
+
request: {
|
|
67
|
+
params: {
|
|
68
|
+
provider: validator.providerParam
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
response: validator.authResponseSchema
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
method: 'POST',
|
|
75
|
+
path: '/auth/forgot-password',
|
|
76
|
+
handler: 'auth.forgotPassword',
|
|
77
|
+
config: {
|
|
78
|
+
middlewares: [
|
|
79
|
+
'plugin::users-permissions.rateLimit'
|
|
80
|
+
],
|
|
81
|
+
prefix: ''
|
|
82
|
+
},
|
|
83
|
+
request: {
|
|
84
|
+
body: {
|
|
85
|
+
'application/json': validator.forgotPasswordBodySchema
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
response: validator.forgotPasswordResponseSchema
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
method: 'POST',
|
|
92
|
+
path: '/auth/reset-password',
|
|
93
|
+
handler: 'auth.resetPassword',
|
|
94
|
+
config: {
|
|
95
|
+
middlewares: [
|
|
96
|
+
'plugin::users-permissions.rateLimit'
|
|
97
|
+
],
|
|
98
|
+
prefix: ''
|
|
99
|
+
},
|
|
100
|
+
request: {
|
|
101
|
+
body: {
|
|
102
|
+
'application/json': validator.resetPasswordBodySchema
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
response: validator.authResponseSchema
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
method: 'GET',
|
|
109
|
+
path: '/auth/email-confirmation',
|
|
110
|
+
handler: 'auth.emailConfirmation',
|
|
111
|
+
config: {
|
|
112
|
+
prefix: ''
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
method: 'POST',
|
|
117
|
+
path: '/auth/send-email-confirmation',
|
|
118
|
+
handler: 'auth.sendEmailConfirmation',
|
|
119
|
+
config: {
|
|
120
|
+
prefix: ''
|
|
121
|
+
},
|
|
122
|
+
request: {
|
|
123
|
+
body: {
|
|
124
|
+
'application/json': validator.sendEmailConfirmationBodySchema
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
response: validator.sendEmailConfirmationResponseSchema
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
method: 'POST',
|
|
131
|
+
path: '/auth/change-password',
|
|
132
|
+
handler: 'auth.changePassword',
|
|
133
|
+
config: {
|
|
134
|
+
middlewares: [
|
|
135
|
+
'plugin::users-permissions.rateLimit'
|
|
136
|
+
],
|
|
137
|
+
prefix: ''
|
|
138
|
+
},
|
|
139
|
+
request: {
|
|
140
|
+
body: {
|
|
141
|
+
'application/json': validator.changePasswordBodySchema
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
response: validator.authResponseSchema
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
method: 'POST',
|
|
148
|
+
path: '/auth/refresh',
|
|
149
|
+
handler: 'auth.refresh',
|
|
150
|
+
config: {
|
|
151
|
+
prefix: ''
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
method: 'POST',
|
|
156
|
+
path: '/auth/logout',
|
|
157
|
+
handler: 'auth.logout',
|
|
158
|
+
config: {
|
|
159
|
+
prefix: ''
|
|
160
|
+
}
|
|
97
161
|
}
|
|
98
|
-
|
|
99
|
-
|
|
162
|
+
];
|
|
163
|
+
};
|
|
100
164
|
return auth;
|
|
101
165
|
}
|
|
102
166
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sources":["../../../../server/routes/content-api/auth.js"],"sourcesContent":["'use strict';\n\nmodule.exports = [\n
|
|
1
|
+
{"version":3,"file":"auth.js","sources":["../../../../server/routes/content-api/auth.js"],"sourcesContent":["'use strict';\n\nconst { UsersPermissionsRouteValidator } = require('./validation');\n\nmodule.exports = (strapi) => {\n const validator = new UsersPermissionsRouteValidator(strapi);\n\n return [\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 request: {\n body: { 'application/json': validator.loginBodySchema },\n },\n response: validator.authResponseSchema,\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 request: {\n body: { 'application/json': validator.registerBodySchema },\n },\n response: validator.authRegisterResponseSchema,\n },\n {\n method: 'GET',\n path: '/auth/:provider/callback',\n handler: 'auth.callback',\n config: {\n prefix: '',\n },\n request: {\n params: {\n provider: validator.providerParam,\n },\n },\n response: validator.authResponseSchema,\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 request: {\n body: { 'application/json': validator.forgotPasswordBodySchema },\n },\n response: validator.forgotPasswordResponseSchema,\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 request: {\n body: { 'application/json': validator.resetPasswordBodySchema },\n },\n response: validator.authResponseSchema,\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 request: {\n body: { 'application/json': validator.sendEmailConfirmationBodySchema },\n },\n response: validator.sendEmailConfirmationResponseSchema,\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 request: {\n body: { 'application/json': validator.changePasswordBodySchema },\n },\n response: validator.authResponseSchema,\n },\n {\n method: 'POST',\n path: '/auth/refresh',\n handler: 'auth.refresh',\n config: { prefix: '' },\n },\n {\n method: 'POST',\n path: '/auth/logout',\n handler: 'auth.logout',\n config: { prefix: '' },\n },\n ];\n};\n"],"names":["UsersPermissionsRouteValidator","require$$0","auth","strapi","validator","method","path","handler","config","middlewares","prefix","request","body","loginBodySchema","response","authResponseSchema","registerBodySchema","authRegisterResponseSchema","params","provider","providerParam","forgotPasswordBodySchema","forgotPasswordResponseSchema","resetPasswordBodySchema","sendEmailConfirmationBodySchema","sendEmailConfirmationResponseSchema","changePasswordBodySchema"],"mappings":"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"}
|