@strapi/plugin-users-permissions 5.52.3 → 5.53.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/dist/server/controllers/auth.js +7 -1
- package/dist/server/controllers/auth.js.map +1 -1
- package/dist/server/controllers/auth.mjs +7 -1
- package/dist/server/controllers/auth.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/change-password.js +6 -3
- package/dist/server/graphql/mutations/auth/change-password.js.map +1 -1
- package/dist/server/graphql/mutations/auth/change-password.mjs +6 -3
- package/dist/server/graphql/mutations/auth/change-password.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/forgot-password.js +6 -3
- package/dist/server/graphql/mutations/auth/forgot-password.js.map +1 -1
- package/dist/server/graphql/mutations/auth/forgot-password.mjs +6 -3
- package/dist/server/graphql/mutations/auth/forgot-password.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/login.js +9 -6
- package/dist/server/graphql/mutations/auth/login.js.map +1 -1
- package/dist/server/graphql/mutations/auth/login.mjs +9 -6
- package/dist/server/graphql/mutations/auth/login.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/rate-limit.js +63 -0
- package/dist/server/graphql/mutations/auth/rate-limit.js.map +1 -0
- package/dist/server/graphql/mutations/auth/rate-limit.mjs +61 -0
- package/dist/server/graphql/mutations/auth/rate-limit.mjs.map +1 -0
- package/dist/server/graphql/mutations/auth/register.js +6 -3
- package/dist/server/graphql/mutations/auth/register.js.map +1 -1
- package/dist/server/graphql/mutations/auth/register.mjs +6 -3
- package/dist/server/graphql/mutations/auth/register.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/reset-password.js +6 -3
- package/dist/server/graphql/mutations/auth/reset-password.js.map +1 -1
- package/dist/server/graphql/mutations/auth/reset-password.mjs +6 -3
- package/dist/server/graphql/mutations/auth/reset-password.mjs.map +1 -1
- package/dist/server/services/providers-registry.js +80 -19
- package/dist/server/services/providers-registry.js.map +1 -1
- package/dist/server/services/providers-registry.mjs +80 -19
- package/dist/server/services/providers-registry.mjs.map +1 -1
- package/dist/server/services/providers.js +12 -8
- package/dist/server/services/providers.js.map +1 -1
- package/dist/server/services/providers.mjs +12 -8
- package/dist/server/services/providers.mjs.map +1 -1
- package/dist/server/services/user.js +7 -7
- package/dist/server/services/user.js.map +1 -1
- package/dist/server/services/user.mjs +7 -7
- package/dist/server/services/user.mjs.map +1 -1
- package/dist/server/utils/oauth-connect/index.js +11 -6
- package/dist/server/utils/oauth-connect/index.js.map +1 -1
- package/dist/server/utils/oauth-connect/index.mjs +11 -6
- package/dist/server/utils/oauth-connect/index.mjs.map +1 -1
- package/dist/server/utils/trim-grant-session-response.js +67 -0
- package/dist/server/utils/trim-grant-session-response.js.map +1 -0
- package/dist/server/utils/trim-grant-session-response.mjs +65 -0
- package/dist/server/utils/trim-grant-session-response.mjs.map +1 -0
- package/package.json +4 -4
- package/server/src/controllers/auth.js +9 -1
- package/server/src/graphql/mutations/auth/change-password.js +5 -5
- package/server/src/graphql/mutations/auth/forgot-password.js +5 -5
- package/server/src/graphql/mutations/auth/login.js +10 -6
- package/server/src/graphql/mutations/auth/rate-limit.js +62 -0
- package/server/src/graphql/mutations/auth/register.js +5 -5
- package/server/src/graphql/mutations/auth/reset-password.js +5 -5
- package/server/src/services/providers-registry.js +99 -23
- package/server/src/services/providers.js +9 -7
- package/server/src/services/user.js +15 -5
- package/server/src/utils/oauth-connect/index.js +12 -6
- package/server/src/utils/trim-grant-session-response.js +70 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-password.js","sources":["../../../../../server/src/graphql/mutations/auth/change-password.js"],"sourcesContent":["'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
|
|
1
|
+
{"version":3,"file":"change-password.js","sources":["../../../../../server/src/graphql/mutations/auth/change-password.js"],"sourcesContent":["'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../utils');\nconst { createRateLimitRunner } = require('./rate-limit');\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n const runRateLimit = createRateLimitRunner(strapi, '/auth/change-password');\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 const output = await runRateLimit(koaContext, { body: toPlainObject(args) }, (ctx) =>\n strapi.plugin('users-permissions').controller('auth').changePassword(ctx)\n );\n\n checkBadRequest(output);\n\n return {\n user: output.user || output,\n jwt: output.jwt,\n };\n },\n };\n};\n"],"names":["toPlainObject","require$$0","checkBadRequest","require$$1","createRateLimitRunner","require$$2","changePassword","nexus","strapi","nonNull","runRateLimit","type","args","currentPassword","password","passwordConfirmation","description","resolve","parent","context","koaContext","output","body","ctx","plugin","controller","user","jwt"],"mappings":";;;;;;;;;;;;;;;IAEA,MAAM,EAAEA,aAAa,EAAE,GAAGC,2BAAAA;IAE1B,MAAM,EAAEC,eAAe,EAAE,GAAGC,eAAAA,EAAAA;IAC5B,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,mBAAAA,EAAAA;AAElCC,IAAAA,cAAAA,GAAiB,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAE,GAAA;QACjC,MAAM,EAAEC,OAAO,EAAE,GAAGF,KAAAA;QACpB,MAAMG,YAAAA,GAAeN,sBAAsBI,MAAAA,EAAQ,uBAAA,CAAA;QAEnD,OAAO;YACLG,IAAAA,EAAM,8BAAA;YAENC,IAAAA,EAAM;AACJC,gBAAAA,eAAAA,EAAiBJ,OAAAA,CAAQ,QAAA,CAAA;AACzBK,gBAAAA,QAAAA,EAAUL,OAAAA,CAAQ,QAAA,CAAA;AAClBM,gBAAAA,oBAAAA,EAAsBN,OAAAA,CAAQ,QAAA;AACpC,aAAA;YAEIO,WAAAA,EAAa,0DAAA;AAEb,YAAA,MAAMC,OAAAA,CAAAA,CAAQC,MAAM,EAAEN,IAAI,EAAEO,OAAO,EAAA;gBACjC,MAAM,EAAEC,UAAU,EAAE,GAAGD,OAAAA;gBAEvB,MAAME,MAAAA,GAAS,MAAMX,YAAAA,CAAaU,UAAAA,EAAY;AAAEE,oBAAAA,IAAAA,EAAMtB,aAAAA,CAAcY,IAAAA;iBAAK,EAAI,CAACW,GAAAA,GAC5Ef,MAAAA,CAAOgB,MAAM,CAAC,qBAAqBC,UAAU,CAAC,MAAA,CAAA,CAAQnB,cAAc,CAACiB,GAAAA,CAAAA,CAAAA;gBAGvErB,eAAAA,CAAgBmB,MAAAA,CAAAA;gBAEhB,OAAO;oBACLK,IAAAA,EAAML,MAAAA,CAAOK,IAAI,IAAIL,MAAAA;AACrBM,oBAAAA,GAAAA,EAAKN,OAAOM;AACpB,iBAAA;AACA,YAAA;AACA,SAAA;AACA,IAAA,CAAA;;;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import require$$0 from 'lodash/fp';
|
|
2
2
|
import { __require as requireUtils } from '../../utils.mjs';
|
|
3
|
+
import { __require as requireRateLimit } from './rate-limit.mjs';
|
|
3
4
|
|
|
4
5
|
var changePassword;
|
|
5
6
|
var hasRequiredChangePassword;
|
|
@@ -8,8 +9,10 @@ function requireChangePassword() {
|
|
|
8
9
|
hasRequiredChangePassword = 1;
|
|
9
10
|
const { toPlainObject } = require$$0;
|
|
10
11
|
const { checkBadRequest } = requireUtils();
|
|
12
|
+
const { createRateLimitRunner } = requireRateLimit();
|
|
11
13
|
changePassword = ({ nexus, strapi })=>{
|
|
12
14
|
const { nonNull } = nexus;
|
|
15
|
+
const runRateLimit = createRateLimitRunner(strapi, '/auth/change-password');
|
|
13
16
|
return {
|
|
14
17
|
type: 'UsersPermissionsLoginPayload',
|
|
15
18
|
args: {
|
|
@@ -20,9 +23,9 @@ function requireChangePassword() {
|
|
|
20
23
|
description: 'Change user password. Confirm with the current password.',
|
|
21
24
|
async resolve (parent, args, context) {
|
|
22
25
|
const { koaContext } = context;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
const output = await runRateLimit(koaContext, {
|
|
27
|
+
body: toPlainObject(args)
|
|
28
|
+
}, (ctx)=>strapi.plugin('users-permissions').controller('auth').changePassword(ctx));
|
|
26
29
|
checkBadRequest(output);
|
|
27
30
|
return {
|
|
28
31
|
user: output.user || output,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-password.mjs","sources":["../../../../../server/src/graphql/mutations/auth/change-password.js"],"sourcesContent":["'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
|
|
1
|
+
{"version":3,"file":"change-password.mjs","sources":["../../../../../server/src/graphql/mutations/auth/change-password.js"],"sourcesContent":["'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../utils');\nconst { createRateLimitRunner } = require('./rate-limit');\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n const runRateLimit = createRateLimitRunner(strapi, '/auth/change-password');\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 const output = await runRateLimit(koaContext, { body: toPlainObject(args) }, (ctx) =>\n strapi.plugin('users-permissions').controller('auth').changePassword(ctx)\n );\n\n checkBadRequest(output);\n\n return {\n user: output.user || output,\n jwt: output.jwt,\n };\n },\n };\n};\n"],"names":["toPlainObject","require$$0","checkBadRequest","require$$1","createRateLimitRunner","require$$2","changePassword","nexus","strapi","nonNull","runRateLimit","type","args","currentPassword","password","passwordConfirmation","description","resolve","parent","context","koaContext","output","body","ctx","plugin","controller","user","jwt"],"mappings":";;;;;;;;;IAEA,MAAM,EAAEA,aAAa,EAAE,GAAGC,UAAAA;IAE1B,MAAM,EAAEC,eAAe,EAAE,GAAGC,YAAAA,EAAAA;IAC5B,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,gBAAAA,EAAAA;AAElCC,IAAAA,cAAAA,GAAiB,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAE,GAAA;QACjC,MAAM,EAAEC,OAAO,EAAE,GAAGF,KAAAA;QACpB,MAAMG,YAAAA,GAAeN,sBAAsBI,MAAAA,EAAQ,uBAAA,CAAA;QAEnD,OAAO;YACLG,IAAAA,EAAM,8BAAA;YAENC,IAAAA,EAAM;AACJC,gBAAAA,eAAAA,EAAiBJ,OAAAA,CAAQ,QAAA,CAAA;AACzBK,gBAAAA,QAAAA,EAAUL,OAAAA,CAAQ,QAAA,CAAA;AAClBM,gBAAAA,oBAAAA,EAAsBN,OAAAA,CAAQ,QAAA;AACpC,aAAA;YAEIO,WAAAA,EAAa,0DAAA;AAEb,YAAA,MAAMC,OAAAA,CAAAA,CAAQC,MAAM,EAAEN,IAAI,EAAEO,OAAO,EAAA;gBACjC,MAAM,EAAEC,UAAU,EAAE,GAAGD,OAAAA;gBAEvB,MAAME,MAAAA,GAAS,MAAMX,YAAAA,CAAaU,UAAAA,EAAY;AAAEE,oBAAAA,IAAAA,EAAMtB,aAAAA,CAAcY,IAAAA;iBAAK,EAAI,CAACW,GAAAA,GAC5Ef,MAAAA,CAAOgB,MAAM,CAAC,qBAAqBC,UAAU,CAAC,MAAA,CAAA,CAAQnB,cAAc,CAACiB,GAAAA,CAAAA,CAAAA;gBAGvErB,eAAAA,CAAgBmB,MAAAA,CAAAA;gBAEhB,OAAO;oBACLK,IAAAA,EAAML,MAAAA,CAAOK,IAAI,IAAIL,MAAAA;AACrBM,oBAAAA,GAAAA,EAAKN,OAAOM;AACpB,iBAAA;AACA,YAAA;AACA,SAAA;AACA,IAAA,CAAA;;;;;;"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var require$$0 = require('lodash/fp');
|
|
4
4
|
var utils = require('../../utils.js');
|
|
5
|
+
var rateLimit = require('./rate-limit.js');
|
|
5
6
|
|
|
6
7
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
8
|
|
|
@@ -14,8 +15,10 @@ function requireForgotPassword() {
|
|
|
14
15
|
hasRequiredForgotPassword = 1;
|
|
15
16
|
const { toPlainObject } = require$$0__default.default;
|
|
16
17
|
const { checkBadRequest } = utils.__require();
|
|
18
|
+
const { createRateLimitRunner } = rateLimit.__require();
|
|
17
19
|
forgotPassword = ({ nexus, strapi })=>{
|
|
18
20
|
const { nonNull } = nexus;
|
|
21
|
+
const runRateLimit = createRateLimitRunner(strapi, '/auth/forgot-password');
|
|
19
22
|
return {
|
|
20
23
|
type: 'UsersPermissionsPasswordPayload',
|
|
21
24
|
args: {
|
|
@@ -24,9 +27,9 @@ function requireForgotPassword() {
|
|
|
24
27
|
description: 'Request a reset password token',
|
|
25
28
|
async resolve (parent, args, context) {
|
|
26
29
|
const { koaContext } = context;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
const output = await runRateLimit(koaContext, {
|
|
31
|
+
body: toPlainObject(args)
|
|
32
|
+
}, (ctx)=>strapi.plugin('users-permissions').controller('auth').forgotPassword(ctx));
|
|
30
33
|
checkBadRequest(output);
|
|
31
34
|
return {
|
|
32
35
|
ok: output.ok || output
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forgot-password.js","sources":["../../../../../server/src/graphql/mutations/auth/forgot-password.js"],"sourcesContent":["'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
|
|
1
|
+
{"version":3,"file":"forgot-password.js","sources":["../../../../../server/src/graphql/mutations/auth/forgot-password.js"],"sourcesContent":["'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../utils');\nconst { createRateLimitRunner } = require('./rate-limit');\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n const runRateLimit = createRateLimitRunner(strapi, '/auth/forgot-password');\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 const output = await runRateLimit(koaContext, { body: toPlainObject(args) }, (ctx) =>\n strapi.plugin('users-permissions').controller('auth').forgotPassword(ctx)\n );\n\n checkBadRequest(output);\n\n return {\n ok: output.ok || output,\n };\n },\n };\n};\n"],"names":["toPlainObject","require$$0","checkBadRequest","require$$1","createRateLimitRunner","require$$2","forgotPassword","nexus","strapi","nonNull","runRateLimit","type","args","email","description","resolve","parent","context","koaContext","output","body","ctx","plugin","controller","ok"],"mappings":";;;;;;;;;;;;;;;IAEA,MAAM,EAAEA,aAAa,EAAE,GAAGC,2BAAAA;IAE1B,MAAM,EAAEC,eAAe,EAAE,GAAGC,eAAAA,EAAAA;IAC5B,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,mBAAAA,EAAAA;AAElCC,IAAAA,cAAAA,GAAiB,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAE,GAAA;QACjC,MAAM,EAAEC,OAAO,EAAE,GAAGF,KAAAA;QACpB,MAAMG,YAAAA,GAAeN,sBAAsBI,MAAAA,EAAQ,uBAAA,CAAA;QAEnD,OAAO;YACLG,IAAAA,EAAM,iCAAA;YAENC,IAAAA,EAAM;AACJC,gBAAAA,KAAAA,EAAOJ,OAAAA,CAAQ,QAAA;AACrB,aAAA;YAEIK,WAAAA,EAAa,gCAAA;AAEb,YAAA,MAAMC,OAAAA,CAAAA,CAAQC,MAAM,EAAEJ,IAAI,EAAEK,OAAO,EAAA;gBACjC,MAAM,EAAEC,UAAU,EAAE,GAAGD,OAAAA;gBAEvB,MAAME,MAAAA,GAAS,MAAMT,YAAAA,CAAaQ,UAAAA,EAAY;AAAEE,oBAAAA,IAAAA,EAAMpB,aAAAA,CAAcY,IAAAA;iBAAK,EAAI,CAACS,GAAAA,GAC5Eb,MAAAA,CAAOc,MAAM,CAAC,qBAAqBC,UAAU,CAAC,MAAA,CAAA,CAAQjB,cAAc,CAACe,GAAAA,CAAAA,CAAAA;gBAGvEnB,eAAAA,CAAgBiB,MAAAA,CAAAA;gBAEhB,OAAO;oBACLK,EAAAA,EAAIL,MAAAA,CAAOK,EAAE,IAAIL;AACzB,iBAAA;AACA,YAAA;AACA,SAAA;AACA,IAAA,CAAA;;;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import require$$0 from 'lodash/fp';
|
|
2
2
|
import { __require as requireUtils } from '../../utils.mjs';
|
|
3
|
+
import { __require as requireRateLimit } from './rate-limit.mjs';
|
|
3
4
|
|
|
4
5
|
var forgotPassword;
|
|
5
6
|
var hasRequiredForgotPassword;
|
|
@@ -8,8 +9,10 @@ function requireForgotPassword() {
|
|
|
8
9
|
hasRequiredForgotPassword = 1;
|
|
9
10
|
const { toPlainObject } = require$$0;
|
|
10
11
|
const { checkBadRequest } = requireUtils();
|
|
12
|
+
const { createRateLimitRunner } = requireRateLimit();
|
|
11
13
|
forgotPassword = ({ nexus, strapi })=>{
|
|
12
14
|
const { nonNull } = nexus;
|
|
15
|
+
const runRateLimit = createRateLimitRunner(strapi, '/auth/forgot-password');
|
|
13
16
|
return {
|
|
14
17
|
type: 'UsersPermissionsPasswordPayload',
|
|
15
18
|
args: {
|
|
@@ -18,9 +21,9 @@ function requireForgotPassword() {
|
|
|
18
21
|
description: 'Request a reset password token',
|
|
19
22
|
async resolve (parent, args, context) {
|
|
20
23
|
const { koaContext } = context;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
const output = await runRateLimit(koaContext, {
|
|
25
|
+
body: toPlainObject(args)
|
|
26
|
+
}, (ctx)=>strapi.plugin('users-permissions').controller('auth').forgotPassword(ctx));
|
|
24
27
|
checkBadRequest(output);
|
|
25
28
|
return {
|
|
26
29
|
ok: output.ok || output
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forgot-password.mjs","sources":["../../../../../server/src/graphql/mutations/auth/forgot-password.js"],"sourcesContent":["'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
|
|
1
|
+
{"version":3,"file":"forgot-password.mjs","sources":["../../../../../server/src/graphql/mutations/auth/forgot-password.js"],"sourcesContent":["'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../utils');\nconst { createRateLimitRunner } = require('./rate-limit');\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n const runRateLimit = createRateLimitRunner(strapi, '/auth/forgot-password');\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 const output = await runRateLimit(koaContext, { body: toPlainObject(args) }, (ctx) =>\n strapi.plugin('users-permissions').controller('auth').forgotPassword(ctx)\n );\n\n checkBadRequest(output);\n\n return {\n ok: output.ok || output,\n };\n },\n };\n};\n"],"names":["toPlainObject","require$$0","checkBadRequest","require$$1","createRateLimitRunner","require$$2","forgotPassword","nexus","strapi","nonNull","runRateLimit","type","args","email","description","resolve","parent","context","koaContext","output","body","ctx","plugin","controller","ok"],"mappings":";;;;;;;;;IAEA,MAAM,EAAEA,aAAa,EAAE,GAAGC,UAAAA;IAE1B,MAAM,EAAEC,eAAe,EAAE,GAAGC,YAAAA,EAAAA;IAC5B,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,gBAAAA,EAAAA;AAElCC,IAAAA,cAAAA,GAAiB,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAE,GAAA;QACjC,MAAM,EAAEC,OAAO,EAAE,GAAGF,KAAAA;QACpB,MAAMG,YAAAA,GAAeN,sBAAsBI,MAAAA,EAAQ,uBAAA,CAAA;QAEnD,OAAO;YACLG,IAAAA,EAAM,iCAAA;YAENC,IAAAA,EAAM;AACJC,gBAAAA,KAAAA,EAAOJ,OAAAA,CAAQ,QAAA;AACrB,aAAA;YAEIK,WAAAA,EAAa,gCAAA;AAEb,YAAA,MAAMC,OAAAA,CAAAA,CAAQC,MAAM,EAAEJ,IAAI,EAAEK,OAAO,EAAA;gBACjC,MAAM,EAAEC,UAAU,EAAE,GAAGD,OAAAA;gBAEvB,MAAME,MAAAA,GAAS,MAAMT,YAAAA,CAAaQ,UAAAA,EAAY;AAAEE,oBAAAA,IAAAA,EAAMpB,aAAAA,CAAcY,IAAAA;iBAAK,EAAI,CAACS,GAAAA,GAC5Eb,MAAAA,CAAOc,MAAM,CAAC,qBAAqBC,UAAU,CAAC,MAAA,CAAA,CAAQjB,cAAc,CAACe,GAAAA,CAAAA,CAAAA;gBAGvEnB,eAAAA,CAAgBiB,MAAAA,CAAAA;gBAEhB,OAAO;oBACLK,EAAAA,EAAIL,MAAAA,CAAOK,EAAE,IAAIL;AACzB,iBAAA;AACA,YAAA;AACA,SAAA;AACA,IAAA,CAAA;;;;;;"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var require$$0 = require('lodash/fp');
|
|
4
4
|
var utils = require('../../utils.js');
|
|
5
|
+
var rateLimit = require('./rate-limit.js');
|
|
5
6
|
|
|
6
7
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
8
|
|
|
@@ -14,8 +15,10 @@ function requireLogin() {
|
|
|
14
15
|
hasRequiredLogin = 1;
|
|
15
16
|
const { toPlainObject } = require$$0__default.default;
|
|
16
17
|
const { checkBadRequest } = utils.__require();
|
|
18
|
+
const { createRateLimitRunner } = rateLimit.__require();
|
|
17
19
|
login = ({ nexus, strapi })=>{
|
|
18
20
|
const { nonNull } = nexus;
|
|
21
|
+
const runRateLimit = createRateLimitRunner(strapi, '/auth/local');
|
|
19
22
|
return {
|
|
20
23
|
type: nonNull('UsersPermissionsLoginPayload'),
|
|
21
24
|
args: {
|
|
@@ -23,12 +26,12 @@ function requireLogin() {
|
|
|
23
26
|
},
|
|
24
27
|
async resolve (parent, args, context) {
|
|
25
28
|
const { koaContext } = context;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
const output = await runRateLimit(koaContext, {
|
|
30
|
+
body: toPlainObject(args.input),
|
|
31
|
+
params: {
|
|
32
|
+
provider: args.input.provider
|
|
33
|
+
}
|
|
34
|
+
}, (ctx)=>strapi.plugin('users-permissions').controller('auth').callback(ctx));
|
|
32
35
|
checkBadRequest(output);
|
|
33
36
|
return {
|
|
34
37
|
user: output.user || output,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sources":["../../../../../server/src/graphql/mutations/auth/login.js"],"sourcesContent":["'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
|
|
1
|
+
{"version":3,"file":"login.js","sources":["../../../../../server/src/graphql/mutations/auth/login.js"],"sourcesContent":["'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../utils');\nconst { createRateLimitRunner } = require('./rate-limit');\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n const runRateLimit = createRateLimitRunner(strapi, '/auth/local');\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 const output = await runRateLimit(\n koaContext,\n {\n body: toPlainObject(args.input),\n params: { provider: args.input.provider },\n },\n (ctx) => strapi.plugin('users-permissions').controller('auth').callback(ctx)\n );\n\n checkBadRequest(output);\n\n return {\n user: output.user || output,\n jwt: output.jwt,\n };\n },\n };\n};\n"],"names":["toPlainObject","require$$0","checkBadRequest","require$$1","createRateLimitRunner","require$$2","login","nexus","strapi","nonNull","runRateLimit","type","args","input","resolve","parent","context","koaContext","output","body","params","provider","ctx","plugin","controller","callback","user","jwt"],"mappings":";;;;;;;;;;;;;;;IAEA,MAAM,EAAEA,aAAa,EAAE,GAAGC,2BAAAA;IAE1B,MAAM,EAAEC,eAAe,EAAE,GAAGC,eAAAA,EAAAA;IAC5B,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,mBAAAA,EAAAA;AAElCC,IAAAA,KAAAA,GAAiB,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAE,GAAA;QACjC,MAAM,EAAEC,OAAO,EAAE,GAAGF,KAAAA;QACpB,MAAMG,YAAAA,GAAeN,sBAAsBI,MAAAA,EAAQ,aAAA,CAAA;QAEnD,OAAO;AACLG,YAAAA,IAAAA,EAAMF,OAAAA,CAAQ,8BAAA,CAAA;YAEdG,IAAAA,EAAM;AACJC,gBAAAA,KAAAA,EAAOJ,OAAAA,CAAQ,4BAAA;AACrB,aAAA;AAEI,YAAA,MAAMK,OAAAA,CAAAA,CAAQC,MAAM,EAAEH,IAAI,EAAEI,OAAO,EAAA;gBACjC,MAAM,EAAEC,UAAU,EAAE,GAAGD,OAAAA;gBAEvB,MAAME,MAAAA,GAAS,MAAMR,YAAAA,CACnBO,UAAAA,EACA;oBACEE,IAAAA,EAAMnB,aAAAA,CAAcY,KAAKC,KAAK,CAAA;oBAC9BO,MAAAA,EAAQ;wBAAEC,QAAAA,EAAUT,IAAAA,CAAKC,KAAK,CAACQ;AAAQ;iBACjD,EACQ,CAACC,GAAAA,GAAQd,MAAAA,CAAOe,MAAM,CAAC,qBAAqBC,UAAU,CAAC,MAAA,CAAA,CAAQC,QAAQ,CAACH,GAAAA,CAAAA,CAAAA;gBAG1EpB,eAAAA,CAAgBgB,MAAAA,CAAAA;gBAEhB,OAAO;oBACLQ,IAAAA,EAAMR,MAAAA,CAAOQ,IAAI,IAAIR,MAAAA;AACrBS,oBAAAA,GAAAA,EAAKT,OAAOS;AACpB,iBAAA;AACA,YAAA;AACA,SAAA;AACA,IAAA,CAAA;;;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import require$$0 from 'lodash/fp';
|
|
2
2
|
import { __require as requireUtils } from '../../utils.mjs';
|
|
3
|
+
import { __require as requireRateLimit } from './rate-limit.mjs';
|
|
3
4
|
|
|
4
5
|
var login;
|
|
5
6
|
var hasRequiredLogin;
|
|
@@ -8,8 +9,10 @@ function requireLogin() {
|
|
|
8
9
|
hasRequiredLogin = 1;
|
|
9
10
|
const { toPlainObject } = require$$0;
|
|
10
11
|
const { checkBadRequest } = requireUtils();
|
|
12
|
+
const { createRateLimitRunner } = requireRateLimit();
|
|
11
13
|
login = ({ nexus, strapi })=>{
|
|
12
14
|
const { nonNull } = nexus;
|
|
15
|
+
const runRateLimit = createRateLimitRunner(strapi, '/auth/local');
|
|
13
16
|
return {
|
|
14
17
|
type: nonNull('UsersPermissionsLoginPayload'),
|
|
15
18
|
args: {
|
|
@@ -17,12 +20,12 @@ function requireLogin() {
|
|
|
17
20
|
},
|
|
18
21
|
async resolve (parent, args, context) {
|
|
19
22
|
const { koaContext } = context;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
const output = await runRateLimit(koaContext, {
|
|
24
|
+
body: toPlainObject(args.input),
|
|
25
|
+
params: {
|
|
26
|
+
provider: args.input.provider
|
|
27
|
+
}
|
|
28
|
+
}, (ctx)=>strapi.plugin('users-permissions').controller('auth').callback(ctx));
|
|
26
29
|
checkBadRequest(output);
|
|
27
30
|
return {
|
|
28
31
|
user: output.user || output,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.mjs","sources":["../../../../../server/src/graphql/mutations/auth/login.js"],"sourcesContent":["'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
|
|
1
|
+
{"version":3,"file":"login.mjs","sources":["../../../../../server/src/graphql/mutations/auth/login.js"],"sourcesContent":["'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../utils');\nconst { createRateLimitRunner } = require('./rate-limit');\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n const runRateLimit = createRateLimitRunner(strapi, '/auth/local');\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 const output = await runRateLimit(\n koaContext,\n {\n body: toPlainObject(args.input),\n params: { provider: args.input.provider },\n },\n (ctx) => strapi.plugin('users-permissions').controller('auth').callback(ctx)\n );\n\n checkBadRequest(output);\n\n return {\n user: output.user || output,\n jwt: output.jwt,\n };\n },\n };\n};\n"],"names":["toPlainObject","require$$0","checkBadRequest","require$$1","createRateLimitRunner","require$$2","login","nexus","strapi","nonNull","runRateLimit","type","args","input","resolve","parent","context","koaContext","output","body","params","provider","ctx","plugin","controller","callback","user","jwt"],"mappings":";;;;;;;;;IAEA,MAAM,EAAEA,aAAa,EAAE,GAAGC,UAAAA;IAE1B,MAAM,EAAEC,eAAe,EAAE,GAAGC,YAAAA,EAAAA;IAC5B,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,gBAAAA,EAAAA;AAElCC,IAAAA,KAAAA,GAAiB,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAE,GAAA;QACjC,MAAM,EAAEC,OAAO,EAAE,GAAGF,KAAAA;QACpB,MAAMG,YAAAA,GAAeN,sBAAsBI,MAAAA,EAAQ,aAAA,CAAA;QAEnD,OAAO;AACLG,YAAAA,IAAAA,EAAMF,OAAAA,CAAQ,8BAAA,CAAA;YAEdG,IAAAA,EAAM;AACJC,gBAAAA,KAAAA,EAAOJ,OAAAA,CAAQ,4BAAA;AACrB,aAAA;AAEI,YAAA,MAAMK,OAAAA,CAAAA,CAAQC,MAAM,EAAEH,IAAI,EAAEI,OAAO,EAAA;gBACjC,MAAM,EAAEC,UAAU,EAAE,GAAGD,OAAAA;gBAEvB,MAAME,MAAAA,GAAS,MAAMR,YAAAA,CACnBO,UAAAA,EACA;oBACEE,IAAAA,EAAMnB,aAAAA,CAAcY,KAAKC,KAAK,CAAA;oBAC9BO,MAAAA,EAAQ;wBAAEC,QAAAA,EAAUT,IAAAA,CAAKC,KAAK,CAACQ;AAAQ;iBACjD,EACQ,CAACC,GAAAA,GAAQd,MAAAA,CAAOe,MAAM,CAAC,qBAAqBC,UAAU,CAAC,MAAA,CAAA,CAAQC,QAAQ,CAACH,GAAAA,CAAAA,CAAAA;gBAG1EpB,eAAAA,CAAgBgB,MAAAA,CAAAA;gBAEhB,OAAO;oBACLQ,IAAAA,EAAMR,MAAAA,CAAOQ,IAAI,IAAIR,MAAAA;AACrBS,oBAAAA,GAAAA,EAAKT,OAAOS;AACpB,iBAAA;AACA,YAAA;AACA,SAAA;AACA,IAAA,CAAA;;;;;;"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var rateLimit;
|
|
4
|
+
var hasRequiredRateLimit;
|
|
5
|
+
function requireRateLimit() {
|
|
6
|
+
if (hasRequiredRateLimit) return rateLimit;
|
|
7
|
+
hasRequiredRateLimit = 1;
|
|
8
|
+
const RATE_LIMIT_MIDDLEWARE = 'plugin::users-permissions.rateLimit';
|
|
9
|
+
const contextQueues = new WeakMap();
|
|
10
|
+
const getRateLimitPath = (strapi, routeSuffix)=>{
|
|
11
|
+
const configuredPrefix = strapi.config.get('api.rest.prefix', '/api');
|
|
12
|
+
const prefix = typeof configuredPrefix === 'string' ? configuredPrefix : '/api';
|
|
13
|
+
const normalizedPrefix = prefix.replace(/^\/+|\/+$/g, '');
|
|
14
|
+
const normalizedSuffix = routeSuffix.replace(/^\/+/, '');
|
|
15
|
+
return `/${[
|
|
16
|
+
normalizedPrefix,
|
|
17
|
+
normalizedSuffix
|
|
18
|
+
].filter(Boolean).join('/')}`;
|
|
19
|
+
};
|
|
20
|
+
const enqueueContextOperation = (koaContext, operation)=>{
|
|
21
|
+
const previous = contextQueues.get(koaContext) || Promise.resolve();
|
|
22
|
+
const result = previous.catch(()=>undefined).then(operation);
|
|
23
|
+
contextQueues.set(koaContext, result.catch(()=>undefined));
|
|
24
|
+
return result;
|
|
25
|
+
};
|
|
26
|
+
const createRateLimitRunner = (strapi, routeSuffix)=>{
|
|
27
|
+
const rateLimit = strapi.middleware(RATE_LIMIT_MIDDLEWARE)({}, {
|
|
28
|
+
strapi
|
|
29
|
+
});
|
|
30
|
+
const routePath = getRateLimitPath(strapi, routeSuffix);
|
|
31
|
+
return (koaContext, { body, params }, controller)=>enqueueContextOperation(koaContext, async ()=>{
|
|
32
|
+
const originalBody = koaContext.request.body;
|
|
33
|
+
const originalPath = koaContext.request.path;
|
|
34
|
+
const originalParams = koaContext.params;
|
|
35
|
+
const originalResponseBody = koaContext.body;
|
|
36
|
+
let responseStatus = 200;
|
|
37
|
+
koaContext.request.path = routePath;
|
|
38
|
+
koaContext.request.body = body;
|
|
39
|
+
if (params) {
|
|
40
|
+
koaContext.params = params;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
await rateLimit(koaContext, ()=>controller(koaContext));
|
|
44
|
+
responseStatus = koaContext.status;
|
|
45
|
+
return koaContext.body;
|
|
46
|
+
} finally{
|
|
47
|
+
koaContext.request.path = originalPath;
|
|
48
|
+
koaContext.request.body = originalBody;
|
|
49
|
+
koaContext.params = originalParams;
|
|
50
|
+
koaContext.body = originalResponseBody;
|
|
51
|
+
koaContext.status = responseStatus;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
rateLimit = {
|
|
56
|
+
createRateLimitRunner,
|
|
57
|
+
getRateLimitPath
|
|
58
|
+
};
|
|
59
|
+
return rateLimit;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
exports.__require = requireRateLimit;
|
|
63
|
+
//# sourceMappingURL=rate-limit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.js","sources":["../../../../../server/src/graphql/mutations/auth/rate-limit.js"],"sourcesContent":["'use strict';\n\nconst RATE_LIMIT_MIDDLEWARE = 'plugin::users-permissions.rateLimit';\nconst contextQueues = new WeakMap();\n\nconst getRateLimitPath = (strapi, routeSuffix) => {\n const configuredPrefix = strapi.config.get('api.rest.prefix', '/api');\n const prefix = typeof configuredPrefix === 'string' ? configuredPrefix : '/api';\n const normalizedPrefix = prefix.replace(/^\\/+|\\/+$/g, '');\n const normalizedSuffix = routeSuffix.replace(/^\\/+/, '');\n\n return `/${[normalizedPrefix, normalizedSuffix].filter(Boolean).join('/')}`;\n};\n\nconst enqueueContextOperation = (koaContext, operation) => {\n const previous = contextQueues.get(koaContext) || Promise.resolve();\n const result = previous.catch(() => undefined).then(operation);\n\n contextQueues.set(\n koaContext,\n result.catch(() => undefined)\n );\n\n return result;\n};\n\nconst createRateLimitRunner = (strapi, routeSuffix) => {\n const rateLimit = strapi.middleware(RATE_LIMIT_MIDDLEWARE)({}, { strapi });\n const routePath = getRateLimitPath(strapi, routeSuffix);\n\n return (koaContext, { body, params }, controller) =>\n enqueueContextOperation(koaContext, async () => {\n const originalBody = koaContext.request.body;\n const originalPath = koaContext.request.path;\n const originalParams = koaContext.params;\n const originalResponseBody = koaContext.body;\n let responseStatus = 200;\n\n koaContext.request.path = routePath;\n koaContext.request.body = body;\n if (params) {\n koaContext.params = params;\n }\n\n try {\n await rateLimit(koaContext, () => controller(koaContext));\n responseStatus = koaContext.status;\n return koaContext.body;\n } finally {\n koaContext.request.path = originalPath;\n koaContext.request.body = originalBody;\n koaContext.params = originalParams;\n koaContext.body = originalResponseBody;\n koaContext.status = responseStatus;\n }\n });\n};\n\nmodule.exports = {\n createRateLimitRunner,\n getRateLimitPath,\n};\n"],"names":["RATE_LIMIT_MIDDLEWARE","contextQueues","WeakMap","getRateLimitPath","strapi","routeSuffix","configuredPrefix","config","get","prefix","normalizedPrefix","replace","normalizedSuffix","filter","Boolean","join","enqueueContextOperation","koaContext","operation","previous","Promise","resolve","result","catch","undefined","then","set","createRateLimitRunner","rateLimit","middleware","routePath","body","params","controller","originalBody","request","originalPath","path","originalParams","originalResponseBody","responseStatus","status"],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
var rateLimit;
|
|
2
|
+
var hasRequiredRateLimit;
|
|
3
|
+
function requireRateLimit() {
|
|
4
|
+
if (hasRequiredRateLimit) return rateLimit;
|
|
5
|
+
hasRequiredRateLimit = 1;
|
|
6
|
+
const RATE_LIMIT_MIDDLEWARE = 'plugin::users-permissions.rateLimit';
|
|
7
|
+
const contextQueues = new WeakMap();
|
|
8
|
+
const getRateLimitPath = (strapi, routeSuffix)=>{
|
|
9
|
+
const configuredPrefix = strapi.config.get('api.rest.prefix', '/api');
|
|
10
|
+
const prefix = typeof configuredPrefix === 'string' ? configuredPrefix : '/api';
|
|
11
|
+
const normalizedPrefix = prefix.replace(/^\/+|\/+$/g, '');
|
|
12
|
+
const normalizedSuffix = routeSuffix.replace(/^\/+/, '');
|
|
13
|
+
return `/${[
|
|
14
|
+
normalizedPrefix,
|
|
15
|
+
normalizedSuffix
|
|
16
|
+
].filter(Boolean).join('/')}`;
|
|
17
|
+
};
|
|
18
|
+
const enqueueContextOperation = (koaContext, operation)=>{
|
|
19
|
+
const previous = contextQueues.get(koaContext) || Promise.resolve();
|
|
20
|
+
const result = previous.catch(()=>undefined).then(operation);
|
|
21
|
+
contextQueues.set(koaContext, result.catch(()=>undefined));
|
|
22
|
+
return result;
|
|
23
|
+
};
|
|
24
|
+
const createRateLimitRunner = (strapi, routeSuffix)=>{
|
|
25
|
+
const rateLimit = strapi.middleware(RATE_LIMIT_MIDDLEWARE)({}, {
|
|
26
|
+
strapi
|
|
27
|
+
});
|
|
28
|
+
const routePath = getRateLimitPath(strapi, routeSuffix);
|
|
29
|
+
return (koaContext, { body, params }, controller)=>enqueueContextOperation(koaContext, async ()=>{
|
|
30
|
+
const originalBody = koaContext.request.body;
|
|
31
|
+
const originalPath = koaContext.request.path;
|
|
32
|
+
const originalParams = koaContext.params;
|
|
33
|
+
const originalResponseBody = koaContext.body;
|
|
34
|
+
let responseStatus = 200;
|
|
35
|
+
koaContext.request.path = routePath;
|
|
36
|
+
koaContext.request.body = body;
|
|
37
|
+
if (params) {
|
|
38
|
+
koaContext.params = params;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
await rateLimit(koaContext, ()=>controller(koaContext));
|
|
42
|
+
responseStatus = koaContext.status;
|
|
43
|
+
return koaContext.body;
|
|
44
|
+
} finally{
|
|
45
|
+
koaContext.request.path = originalPath;
|
|
46
|
+
koaContext.request.body = originalBody;
|
|
47
|
+
koaContext.params = originalParams;
|
|
48
|
+
koaContext.body = originalResponseBody;
|
|
49
|
+
koaContext.status = responseStatus;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
rateLimit = {
|
|
54
|
+
createRateLimitRunner,
|
|
55
|
+
getRateLimitPath
|
|
56
|
+
};
|
|
57
|
+
return rateLimit;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { requireRateLimit as __require };
|
|
61
|
+
//# sourceMappingURL=rate-limit.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.mjs","sources":["../../../../../server/src/graphql/mutations/auth/rate-limit.js"],"sourcesContent":["'use strict';\n\nconst RATE_LIMIT_MIDDLEWARE = 'plugin::users-permissions.rateLimit';\nconst contextQueues = new WeakMap();\n\nconst getRateLimitPath = (strapi, routeSuffix) => {\n const configuredPrefix = strapi.config.get('api.rest.prefix', '/api');\n const prefix = typeof configuredPrefix === 'string' ? configuredPrefix : '/api';\n const normalizedPrefix = prefix.replace(/^\\/+|\\/+$/g, '');\n const normalizedSuffix = routeSuffix.replace(/^\\/+/, '');\n\n return `/${[normalizedPrefix, normalizedSuffix].filter(Boolean).join('/')}`;\n};\n\nconst enqueueContextOperation = (koaContext, operation) => {\n const previous = contextQueues.get(koaContext) || Promise.resolve();\n const result = previous.catch(() => undefined).then(operation);\n\n contextQueues.set(\n koaContext,\n result.catch(() => undefined)\n );\n\n return result;\n};\n\nconst createRateLimitRunner = (strapi, routeSuffix) => {\n const rateLimit = strapi.middleware(RATE_LIMIT_MIDDLEWARE)({}, { strapi });\n const routePath = getRateLimitPath(strapi, routeSuffix);\n\n return (koaContext, { body, params }, controller) =>\n enqueueContextOperation(koaContext, async () => {\n const originalBody = koaContext.request.body;\n const originalPath = koaContext.request.path;\n const originalParams = koaContext.params;\n const originalResponseBody = koaContext.body;\n let responseStatus = 200;\n\n koaContext.request.path = routePath;\n koaContext.request.body = body;\n if (params) {\n koaContext.params = params;\n }\n\n try {\n await rateLimit(koaContext, () => controller(koaContext));\n responseStatus = koaContext.status;\n return koaContext.body;\n } finally {\n koaContext.request.path = originalPath;\n koaContext.request.body = originalBody;\n koaContext.params = originalParams;\n koaContext.body = originalResponseBody;\n koaContext.status = responseStatus;\n }\n });\n};\n\nmodule.exports = {\n createRateLimitRunner,\n getRateLimitPath,\n};\n"],"names":["RATE_LIMIT_MIDDLEWARE","contextQueues","WeakMap","getRateLimitPath","strapi","routeSuffix","configuredPrefix","config","get","prefix","normalizedPrefix","replace","normalizedSuffix","filter","Boolean","join","enqueueContextOperation","koaContext","operation","previous","Promise","resolve","result","catch","undefined","then","set","createRateLimitRunner","rateLimit","middleware","routePath","body","params","controller","originalBody","request","originalPath","path","originalParams","originalResponseBody","responseStatus","status"],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var require$$0 = require('lodash/fp');
|
|
4
4
|
var utils = require('../../utils.js');
|
|
5
|
+
var rateLimit = require('./rate-limit.js');
|
|
5
6
|
|
|
6
7
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
8
|
|
|
@@ -14,8 +15,10 @@ function requireRegister() {
|
|
|
14
15
|
hasRequiredRegister = 1;
|
|
15
16
|
const { toPlainObject } = require$$0__default.default;
|
|
16
17
|
const { checkBadRequest } = utils.__require();
|
|
18
|
+
const { createRateLimitRunner } = rateLimit.__require();
|
|
17
19
|
register = ({ nexus, strapi })=>{
|
|
18
20
|
const { nonNull } = nexus;
|
|
21
|
+
const runRateLimit = createRateLimitRunner(strapi, '/auth/local/register');
|
|
19
22
|
return {
|
|
20
23
|
type: nonNull('UsersPermissionsLoginPayload'),
|
|
21
24
|
args: {
|
|
@@ -24,9 +27,9 @@ function requireRegister() {
|
|
|
24
27
|
description: 'Register a user',
|
|
25
28
|
async resolve (parent, args, context) {
|
|
26
29
|
const { koaContext } = context;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
const output = await runRateLimit(koaContext, {
|
|
31
|
+
body: toPlainObject(args.input)
|
|
32
|
+
}, (ctx)=>strapi.plugin('users-permissions').controller('auth').register(ctx));
|
|
30
33
|
checkBadRequest(output);
|
|
31
34
|
return {
|
|
32
35
|
user: output.user || output,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sources":["../../../../../server/src/graphql/mutations/auth/register.js"],"sourcesContent":["'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
|
|
1
|
+
{"version":3,"file":"register.js","sources":["../../../../../server/src/graphql/mutations/auth/register.js"],"sourcesContent":["'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../utils');\nconst { createRateLimitRunner } = require('./rate-limit');\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n const runRateLimit = createRateLimitRunner(strapi, '/auth/local/register');\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 const output = await runRateLimit(koaContext, { body: toPlainObject(args.input) }, (ctx) =>\n strapi.plugin('users-permissions').controller('auth').register(ctx)\n );\n\n checkBadRequest(output);\n\n return {\n user: output.user || output,\n jwt: output.jwt,\n };\n },\n };\n};\n"],"names":["toPlainObject","require$$0","checkBadRequest","require$$1","createRateLimitRunner","require$$2","register","nexus","strapi","nonNull","runRateLimit","type","args","input","description","resolve","parent","context","koaContext","output","body","ctx","plugin","controller","user","jwt"],"mappings":";;;;;;;;;;;;;;;IAEA,MAAM,EAAEA,aAAa,EAAE,GAAGC,2BAAAA;IAE1B,MAAM,EAAEC,eAAe,EAAE,GAAGC,eAAAA,EAAAA;IAC5B,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,mBAAAA,EAAAA;AAElCC,IAAAA,QAAAA,GAAiB,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAE,GAAA;QACjC,MAAM,EAAEC,OAAO,EAAE,GAAGF,KAAAA;QACpB,MAAMG,YAAAA,GAAeN,sBAAsBI,MAAAA,EAAQ,sBAAA,CAAA;QAEnD,OAAO;AACLG,YAAAA,IAAAA,EAAMF,OAAAA,CAAQ,8BAAA,CAAA;YAEdG,IAAAA,EAAM;AACJC,gBAAAA,KAAAA,EAAOJ,OAAAA,CAAQ,+BAAA;AACrB,aAAA;YAEIK,WAAAA,EAAa,iBAAA;AAEb,YAAA,MAAMC,OAAAA,CAAAA,CAAQC,MAAM,EAAEJ,IAAI,EAAEK,OAAO,EAAA;gBACjC,MAAM,EAAEC,UAAU,EAAE,GAAGD,OAAAA;gBAEvB,MAAME,MAAAA,GAAS,MAAMT,YAAAA,CAAaQ,UAAAA,EAAY;oBAAEE,IAAAA,EAAMpB,aAAAA,CAAcY,KAAKC,KAAK;iBAAC,EAAI,CAACQ,GAAAA,GAClFb,MAAAA,CAAOc,MAAM,CAAC,qBAAqBC,UAAU,CAAC,MAAA,CAAA,CAAQjB,QAAQ,CAACe,GAAAA,CAAAA,CAAAA;gBAGjEnB,eAAAA,CAAgBiB,MAAAA,CAAAA;gBAEhB,OAAO;oBACLK,IAAAA,EAAML,MAAAA,CAAOK,IAAI,IAAIL,MAAAA;AACrBM,oBAAAA,GAAAA,EAAKN,OAAOM;AACpB,iBAAA;AACA,YAAA;AACA,SAAA;AACA,IAAA,CAAA;;;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import require$$0 from 'lodash/fp';
|
|
2
2
|
import { __require as requireUtils } from '../../utils.mjs';
|
|
3
|
+
import { __require as requireRateLimit } from './rate-limit.mjs';
|
|
3
4
|
|
|
4
5
|
var register;
|
|
5
6
|
var hasRequiredRegister;
|
|
@@ -8,8 +9,10 @@ function requireRegister() {
|
|
|
8
9
|
hasRequiredRegister = 1;
|
|
9
10
|
const { toPlainObject } = require$$0;
|
|
10
11
|
const { checkBadRequest } = requireUtils();
|
|
12
|
+
const { createRateLimitRunner } = requireRateLimit();
|
|
11
13
|
register = ({ nexus, strapi })=>{
|
|
12
14
|
const { nonNull } = nexus;
|
|
15
|
+
const runRateLimit = createRateLimitRunner(strapi, '/auth/local/register');
|
|
13
16
|
return {
|
|
14
17
|
type: nonNull('UsersPermissionsLoginPayload'),
|
|
15
18
|
args: {
|
|
@@ -18,9 +21,9 @@ function requireRegister() {
|
|
|
18
21
|
description: 'Register a user',
|
|
19
22
|
async resolve (parent, args, context) {
|
|
20
23
|
const { koaContext } = context;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
const output = await runRateLimit(koaContext, {
|
|
25
|
+
body: toPlainObject(args.input)
|
|
26
|
+
}, (ctx)=>strapi.plugin('users-permissions').controller('auth').register(ctx));
|
|
24
27
|
checkBadRequest(output);
|
|
25
28
|
return {
|
|
26
29
|
user: output.user || output,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.mjs","sources":["../../../../../server/src/graphql/mutations/auth/register.js"],"sourcesContent":["'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
|
|
1
|
+
{"version":3,"file":"register.mjs","sources":["../../../../../server/src/graphql/mutations/auth/register.js"],"sourcesContent":["'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../utils');\nconst { createRateLimitRunner } = require('./rate-limit');\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n const runRateLimit = createRateLimitRunner(strapi, '/auth/local/register');\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 const output = await runRateLimit(koaContext, { body: toPlainObject(args.input) }, (ctx) =>\n strapi.plugin('users-permissions').controller('auth').register(ctx)\n );\n\n checkBadRequest(output);\n\n return {\n user: output.user || output,\n jwt: output.jwt,\n };\n },\n };\n};\n"],"names":["toPlainObject","require$$0","checkBadRequest","require$$1","createRateLimitRunner","require$$2","register","nexus","strapi","nonNull","runRateLimit","type","args","input","description","resolve","parent","context","koaContext","output","body","ctx","plugin","controller","user","jwt"],"mappings":";;;;;;;;;IAEA,MAAM,EAAEA,aAAa,EAAE,GAAGC,UAAAA;IAE1B,MAAM,EAAEC,eAAe,EAAE,GAAGC,YAAAA,EAAAA;IAC5B,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,gBAAAA,EAAAA;AAElCC,IAAAA,QAAAA,GAAiB,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAE,GAAA;QACjC,MAAM,EAAEC,OAAO,EAAE,GAAGF,KAAAA;QACpB,MAAMG,YAAAA,GAAeN,sBAAsBI,MAAAA,EAAQ,sBAAA,CAAA;QAEnD,OAAO;AACLG,YAAAA,IAAAA,EAAMF,OAAAA,CAAQ,8BAAA,CAAA;YAEdG,IAAAA,EAAM;AACJC,gBAAAA,KAAAA,EAAOJ,OAAAA,CAAQ,+BAAA;AACrB,aAAA;YAEIK,WAAAA,EAAa,iBAAA;AAEb,YAAA,MAAMC,OAAAA,CAAAA,CAAQC,MAAM,EAAEJ,IAAI,EAAEK,OAAO,EAAA;gBACjC,MAAM,EAAEC,UAAU,EAAE,GAAGD,OAAAA;gBAEvB,MAAME,MAAAA,GAAS,MAAMT,YAAAA,CAAaQ,UAAAA,EAAY;oBAAEE,IAAAA,EAAMpB,aAAAA,CAAcY,KAAKC,KAAK;iBAAC,EAAI,CAACQ,GAAAA,GAClFb,MAAAA,CAAOc,MAAM,CAAC,qBAAqBC,UAAU,CAAC,MAAA,CAAA,CAAQjB,QAAQ,CAACe,GAAAA,CAAAA,CAAAA;gBAGjEnB,eAAAA,CAAgBiB,MAAAA,CAAAA;gBAEhB,OAAO;oBACLK,IAAAA,EAAML,MAAAA,CAAOK,IAAI,IAAIL,MAAAA;AACrBM,oBAAAA,GAAAA,EAAKN,OAAOM;AACpB,iBAAA;AACA,YAAA;AACA,SAAA;AACA,IAAA,CAAA;;;;;;"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var require$$0 = require('lodash/fp');
|
|
4
4
|
var utils = require('../../utils.js');
|
|
5
|
+
var rateLimit = require('./rate-limit.js');
|
|
5
6
|
|
|
6
7
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
8
|
|
|
@@ -14,8 +15,10 @@ function requireResetPassword() {
|
|
|
14
15
|
hasRequiredResetPassword = 1;
|
|
15
16
|
const { toPlainObject } = require$$0__default.default;
|
|
16
17
|
const { checkBadRequest } = utils.__require();
|
|
18
|
+
const { createRateLimitRunner } = rateLimit.__require();
|
|
17
19
|
resetPassword = ({ nexus, strapi })=>{
|
|
18
20
|
const { nonNull } = nexus;
|
|
21
|
+
const runRateLimit = createRateLimitRunner(strapi, '/auth/reset-password');
|
|
19
22
|
return {
|
|
20
23
|
type: 'UsersPermissionsLoginPayload',
|
|
21
24
|
args: {
|
|
@@ -26,9 +29,9 @@ function requireResetPassword() {
|
|
|
26
29
|
description: 'Reset user password. Confirm with a code (resetToken from forgotPassword)',
|
|
27
30
|
async resolve (parent, args, context) {
|
|
28
31
|
const { koaContext } = context;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
const output = await runRateLimit(koaContext, {
|
|
33
|
+
body: toPlainObject(args)
|
|
34
|
+
}, (ctx)=>strapi.plugin('users-permissions').controller('auth').resetPassword(ctx));
|
|
32
35
|
checkBadRequest(output);
|
|
33
36
|
return {
|
|
34
37
|
user: output.user || output,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset-password.js","sources":["../../../../../server/src/graphql/mutations/auth/reset-password.js"],"sourcesContent":["'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
|
|
1
|
+
{"version":3,"file":"reset-password.js","sources":["../../../../../server/src/graphql/mutations/auth/reset-password.js"],"sourcesContent":["'use strict';\n\nconst { toPlainObject } = require('lodash/fp');\n\nconst { checkBadRequest } = require('../../utils');\nconst { createRateLimitRunner } = require('./rate-limit');\n\nmodule.exports = ({ nexus, strapi }) => {\n const { nonNull } = nexus;\n const runRateLimit = createRateLimitRunner(strapi, '/auth/reset-password');\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 const output = await runRateLimit(koaContext, { body: toPlainObject(args) }, (ctx) =>\n strapi.plugin('users-permissions').controller('auth').resetPassword(ctx)\n );\n\n checkBadRequest(output);\n\n return {\n user: output.user || output,\n jwt: output.jwt,\n };\n },\n };\n};\n"],"names":["toPlainObject","require$$0","checkBadRequest","require$$1","createRateLimitRunner","require$$2","resetPassword","nexus","strapi","nonNull","runRateLimit","type","args","password","passwordConfirmation","code","description","resolve","parent","context","koaContext","output","body","ctx","plugin","controller","user","jwt"],"mappings":";;;;;;;;;;;;;;;IAEA,MAAM,EAAEA,aAAa,EAAE,GAAGC,2BAAAA;IAE1B,MAAM,EAAEC,eAAe,EAAE,GAAGC,eAAAA,EAAAA;IAC5B,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,mBAAAA,EAAAA;AAElCC,IAAAA,aAAAA,GAAiB,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAE,GAAA;QACjC,MAAM,EAAEC,OAAO,EAAE,GAAGF,KAAAA;QACpB,MAAMG,YAAAA,GAAeN,sBAAsBI,MAAAA,EAAQ,sBAAA,CAAA;QAEnD,OAAO;YACLG,IAAAA,EAAM,8BAAA;YAENC,IAAAA,EAAM;AACJC,gBAAAA,QAAAA,EAAUJ,OAAAA,CAAQ,QAAA,CAAA;AAClBK,gBAAAA,oBAAAA,EAAsBL,OAAAA,CAAQ,QAAA,CAAA;AAC9BM,gBAAAA,IAAAA,EAAMN,OAAAA,CAAQ,QAAA;AACpB,aAAA;YAEIO,WAAAA,EAAa,2EAAA;AAEb,YAAA,MAAMC,OAAAA,CAAAA,CAAQC,MAAM,EAAEN,IAAI,EAAEO,OAAO,EAAA;gBACjC,MAAM,EAAEC,UAAU,EAAE,GAAGD,OAAAA;gBAEvB,MAAME,MAAAA,GAAS,MAAMX,YAAAA,CAAaU,UAAAA,EAAY;AAAEE,oBAAAA,IAAAA,EAAMtB,aAAAA,CAAcY,IAAAA;iBAAK,EAAI,CAACW,GAAAA,GAC5Ef,MAAAA,CAAOgB,MAAM,CAAC,qBAAqBC,UAAU,CAAC,MAAA,CAAA,CAAQnB,aAAa,CAACiB,GAAAA,CAAAA,CAAAA;gBAGtErB,eAAAA,CAAgBmB,MAAAA,CAAAA;gBAEhB,OAAO;oBACLK,IAAAA,EAAML,MAAAA,CAAOK,IAAI,IAAIL,MAAAA;AACrBM,oBAAAA,GAAAA,EAAKN,OAAOM;AACpB,iBAAA;AACA,YAAA;AACA,SAAA;AACA,IAAA,CAAA;;;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import require$$0 from 'lodash/fp';
|
|
2
2
|
import { __require as requireUtils } from '../../utils.mjs';
|
|
3
|
+
import { __require as requireRateLimit } from './rate-limit.mjs';
|
|
3
4
|
|
|
4
5
|
var resetPassword;
|
|
5
6
|
var hasRequiredResetPassword;
|
|
@@ -8,8 +9,10 @@ function requireResetPassword() {
|
|
|
8
9
|
hasRequiredResetPassword = 1;
|
|
9
10
|
const { toPlainObject } = require$$0;
|
|
10
11
|
const { checkBadRequest } = requireUtils();
|
|
12
|
+
const { createRateLimitRunner } = requireRateLimit();
|
|
11
13
|
resetPassword = ({ nexus, strapi })=>{
|
|
12
14
|
const { nonNull } = nexus;
|
|
15
|
+
const runRateLimit = createRateLimitRunner(strapi, '/auth/reset-password');
|
|
13
16
|
return {
|
|
14
17
|
type: 'UsersPermissionsLoginPayload',
|
|
15
18
|
args: {
|
|
@@ -20,9 +23,9 @@ function requireResetPassword() {
|
|
|
20
23
|
description: 'Reset user password. Confirm with a code (resetToken from forgotPassword)',
|
|
21
24
|
async resolve (parent, args, context) {
|
|
22
25
|
const { koaContext } = context;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
const output = await runRateLimit(koaContext, {
|
|
27
|
+
body: toPlainObject(args)
|
|
28
|
+
}, (ctx)=>strapi.plugin('users-permissions').controller('auth').resetPassword(ctx));
|
|
26
29
|
checkBadRequest(output);
|
|
27
30
|
return {
|
|
28
31
|
user: output.user || output,
|