payload 1.8.3 → 1.8.4-canary.1
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/auth/baseFields/auth.d.ts +2 -2
- package/dist/auth/baseFields/auth.js +12 -1
- package/dist/auth/baseFields/auth.js.map +1 -1
- package/dist/auth/operations/login.js +14 -8
- package/dist/auth/operations/login.js.map +1 -1
- package/dist/auth/operations/resetPassword.js +12 -5
- package/dist/auth/operations/resetPassword.js.map +1 -1
- package/dist/auth/operations/unlock.js +6 -1
- package/dist/auth/operations/unlock.js.map +1 -1
- package/dist/auth/strategies/local/authenticate.d.ts +8 -0
- package/dist/auth/strategies/local/authenticate.js +35 -0
- package/dist/auth/strategies/local/authenticate.js.map +1 -0
- package/dist/auth/strategies/local/generatePasswordSaltHash.d.ts +8 -0
- package/dist/auth/strategies/local/generatePasswordSaltHash.js +34 -0
- package/dist/auth/strategies/local/generatePasswordSaltHash.js.map +1 -0
- package/dist/auth/strategies/local/incrementLoginAttempts.d.ts +9 -0
- package/dist/auth/strategies/local/incrementLoginAttempts.js +36 -0
- package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -0
- package/dist/auth/strategies/local/register.d.ts +10 -0
- package/dist/auth/strategies/local/register.js +28 -0
- package/dist/auth/strategies/local/register.js.map +1 -0
- package/dist/auth/strategies/local/resetLoginAttempts.d.ts +9 -0
- package/dist/auth/strategies/local/resetLoginAttempts.js +15 -0
- package/dist/auth/strategies/local/resetLoginAttempts.js.map +1 -0
- package/dist/bin/generateTypes.js +8 -12
- package/dist/bin/generateTypes.js.map +1 -1
- package/dist/collections/initLocal.js +0 -32
- package/dist/collections/initLocal.js.map +1 -1
- package/dist/collections/operations/create.js +7 -10
- package/dist/collections/operations/create.js.map +1 -1
- package/dist/collections/operations/updateByID.js +7 -4
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/fields/config/schema.js +4 -0
- package/dist/fields/config/schema.js.map +1 -1
- package/dist/fields/config/types.d.ts +33 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/graphql/registerSchema.js +3 -0
- package/dist/graphql/registerSchema.js.map +1 -1
- package/dist/graphql/schema/buildObjectType.js +54 -33
- package/dist/graphql/schema/buildObjectType.js.map +1 -1
- package/dist/graphql/schema/withOperators.js +1 -1
- package/dist/graphql/schema/withOperators.js.map +1 -1
- package/dist/payload.d.ts +3 -0
- package/dist/payload.js.map +1 -1
- package/dist/utilities/entityToJSONSchema.d.ts +2 -2
- package/dist/utilities/entityToJSONSchema.js +67 -57
- package/dist/utilities/entityToJSONSchema.js.map +1 -1
- package/docs/access-control/overview.mdx +1 -1
- package/docs/fields/array.mdx +49 -44
- package/docs/fields/blocks.mdx +68 -57
- package/docs/fields/group.mdx +34 -29
- package/docs/fields/tabs.mdx +42 -35
- package/docs/graphql/graphql-schema.mdx +45 -6
- package/docs/graphql/overview.mdx +47 -39
- package/docs/typescript/generating-types.mdx +86 -23
- package/package.json +2 -2
- package/dist/graphql/schema/buildBlockType.d.ts +0 -9
- package/dist/graphql/schema/buildBlockType.js +0 -28
- package/dist/graphql/schema/buildBlockType.js.map +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Field } from '../../fields/config/types';
|
|
2
|
-
declare const
|
|
3
|
-
export default
|
|
2
|
+
declare const baseAuthFields: Field[];
|
|
3
|
+
export default baseAuthFields;
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const validations_1 = require("../../fields/validations");
|
|
4
4
|
const extractTranslations_1 = require("../../translations/extractTranslations");
|
|
5
5
|
const labels = (0, extractTranslations_1.extractTranslations)(['general:email']);
|
|
6
|
-
|
|
6
|
+
const baseAuthFields = [
|
|
7
7
|
{
|
|
8
8
|
name: 'email',
|
|
9
9
|
label: labels['general:email'],
|
|
@@ -26,5 +26,16 @@ exports.default = [
|
|
|
26
26
|
type: 'date',
|
|
27
27
|
hidden: true,
|
|
28
28
|
},
|
|
29
|
+
{
|
|
30
|
+
name: 'salt',
|
|
31
|
+
type: 'text',
|
|
32
|
+
hidden: true,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'hash',
|
|
36
|
+
type: 'text',
|
|
37
|
+
hidden: true,
|
|
38
|
+
}
|
|
29
39
|
];
|
|
40
|
+
exports.default = baseAuthFields;
|
|
30
41
|
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/auth/baseFields/auth.ts"],"names":[],"mappings":";;AAAA,0DAAiD;AAEjD,gFAA6E;AAE7E,MAAM,MAAM,GAAG,IAAA,yCAAmB,EAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AAEtD,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/auth/baseFields/auth.ts"],"names":[],"mappings":";;AAAA,0DAAiD;AAEjD,gFAA6E;AAE7E,MAAM,MAAM,GAAG,IAAA,yCAAmB,EAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AAEtD,MAAM,cAAc,GAAY;IAC9B;QACE,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC;QAC9B,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,mBAAK;QACf,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE;YACL,UAAU,EAAE;gBACV,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI;aAClB;SACF;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,IAAI;KACb;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,IAAI;KACb;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,IAAI;KACb;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,IAAI;KACb;CACF,CAAC;AAEF,kBAAe,cAAc,CAAA"}
|
|
@@ -11,6 +11,8 @@ const sanitizeInternalFields_1 = __importDefault(require("../../utilities/saniti
|
|
|
11
11
|
const types_1 = require("../../fields/config/types");
|
|
12
12
|
const afterRead_1 = require("../../fields/hooks/afterRead");
|
|
13
13
|
const unlock_1 = __importDefault(require("./unlock"));
|
|
14
|
+
const incrementLoginAttempts_1 = require("../strategies/local/incrementLoginAttempts");
|
|
15
|
+
const authenticate_1 = require("../strategies/local/authenticate");
|
|
14
16
|
async function login(incomingArgs) {
|
|
15
17
|
let args = incomingArgs;
|
|
16
18
|
// /////////////////////////////////////
|
|
@@ -31,18 +33,25 @@ async function login(incomingArgs) {
|
|
|
31
33
|
const email = unsanitizedEmail ? unsanitizedEmail.toLowerCase().trim() : null;
|
|
32
34
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
33
35
|
// @ts-ignore Improper typing in library, additional args should be optional
|
|
34
|
-
const userDoc = await Model.
|
|
36
|
+
const userDoc = await Model.findOne({ email }).lean();
|
|
37
|
+
let user = JSON.parse(JSON.stringify(userDoc));
|
|
35
38
|
if (!userDoc || (args.collection.config.auth.verify && userDoc._verified === false)) {
|
|
36
39
|
throw new errors_1.AuthenticationError(req.t);
|
|
37
40
|
}
|
|
38
41
|
if (userDoc && (0, isLocked_1.default)(userDoc.lockUntil)) {
|
|
39
42
|
throw new errors_1.LockedAuth(req.t);
|
|
40
43
|
}
|
|
41
|
-
const authResult = await
|
|
44
|
+
const authResult = await (0, authenticate_1.authenticateLocalStrategy)({ password, doc: user });
|
|
45
|
+
user = (0, sanitizeInternalFields_1.default)(user);
|
|
42
46
|
const maxLoginAttemptsEnabled = args.collection.config.auth.maxLoginAttempts > 0;
|
|
43
|
-
if (!authResult
|
|
44
|
-
if (maxLoginAttemptsEnabled)
|
|
45
|
-
await
|
|
47
|
+
if (!authResult) {
|
|
48
|
+
if (maxLoginAttemptsEnabled) {
|
|
49
|
+
await (0, incrementLoginAttempts_1.incrementLoginAttempts)({
|
|
50
|
+
payload: req.payload,
|
|
51
|
+
doc: user,
|
|
52
|
+
collection: collectionConfig,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
46
55
|
throw new errors_1.AuthenticationError(req.t);
|
|
47
56
|
}
|
|
48
57
|
if (maxLoginAttemptsEnabled) {
|
|
@@ -56,9 +65,6 @@ async function login(incomingArgs) {
|
|
|
56
65
|
overrideAccess: true,
|
|
57
66
|
});
|
|
58
67
|
}
|
|
59
|
-
let user = userDoc.toJSON({ virtuals: true });
|
|
60
|
-
user = JSON.parse(JSON.stringify(user));
|
|
61
|
-
user = (0, sanitizeInternalFields_1.default)(user);
|
|
62
68
|
const fieldsToSign = collectionConfig.fields.reduce((signedFields, field) => {
|
|
63
69
|
const result = {
|
|
64
70
|
...signedFields,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/auth/operations/login.ts"],"names":[],"mappings":";;;;;AAAA,gEAA+B;AAG/B,yCAA+D;AAE/D,8FAAsE;AACtE,2DAAmC;AACnC,oGAA4E;AAC5E,qDAAuF;AAGvF,4DAAyD;AACzD,sDAA8B;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/auth/operations/login.ts"],"names":[],"mappings":";;;;;AAAA,gEAA+B;AAG/B,yCAA+D;AAE/D,8FAAsE;AACtE,2DAAmC;AACnC,oGAA4E;AAC5E,qDAAuF;AAGvF,4DAAyD;AACzD,sDAA8B;AAC9B,uFAAoF;AACpF,mEAA6E;AAqB7E,KAAK,UAAU,KAAK,CAClB,YAAuB;IAEvB,IAAI,IAAI,GAAG,YAAY,CAAC;IAExB,wCAAwC;IACxC,+BAA+B;IAC/B,wCAAwC;IAExC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;QAClF,MAAM,SAAS,CAAC;QAEhB,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;YACjB,IAAI;YACJ,SAAS,EAAE,OAAO;SACnB,CAAC,CAAC,IAAI,IAAI,CAAC;IACd,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEtB,MAAM,EACJ,UAAU,EAAE,EACV,KAAK,EACL,MAAM,EAAE,gBAAgB,GACzB,EACD,IAAI,EACJ,GAAG,EAAE,EACH,OAAO,EAAE,EACP,MAAM,EACN,MAAM,GACP,GACF,EACD,GAAG,EACH,KAAK,EACL,cAAc,EACd,gBAAgB,GACjB,GAAG,IAAI,CAAC;IAET,wCAAwC;IACxC,QAAQ;IACR,wCAAwC;IAExC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEnD,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAE,gBAA2B,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAE1F,6DAA6D;IAC7D,4EAA4E;IAC5E,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEtD,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAE/C,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE;QACnF,MAAM,IAAI,4BAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACtC;IAED,IAAI,OAAO,IAAI,IAAA,kBAAQ,EAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QAC1C,MAAM,IAAI,mBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAC7B;IAED,MAAM,UAAU,GAAG,MAAM,IAAA,wCAAyB,EAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5E,IAAI,GAAG,IAAA,gCAAsB,EAAC,IAAI,CAAC,CAAC;IAEpC,MAAM,uBAAuB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAEjF,IAAI,CAAC,UAAU,EAAE;QACf,IAAI,uBAAuB,EAAE;YAC3B,MAAM,IAAA,+CAAsB,EAAC;gBAC3B,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,GAAG,EAAE,IAAI;gBACT,UAAU,EAAE,gBAAgB;aAC7B,CAAC,CAAC;SACJ;QAED,MAAM,IAAI,4BAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACtC;IAED,IAAI,uBAAuB,EAAE;QAC3B,MAAM,IAAA,gBAAM,EAAC;YACX,UAAU,EAAE;gBACV,KAAK;gBACL,MAAM,EAAE,gBAAgB;aACzB;YACD,GAAG;YACH,IAAI;YACJ,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;KACJ;IAED,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,KAAY,EAAE,EAAE;QACjF,MAAM,MAAM,GAAG;YACb,GAAG,YAAY;SAChB,CAAC;QAEF,IAAI,CAAC,IAAA,wBAAgB,EAAC,KAAK,CAAC,IAAI,IAAA,yBAAiB,EAAC,KAAK,CAAC,EAAE;YACxD,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAChC,IAAI,IAAA,wBAAgB,EAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE;oBACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBAC7C;YACH,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,IAAA,wBAAgB,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE;YAC9C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACvC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE;QACD,KAAK;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,UAAU,EAAE,gBAAgB,CAAC,IAAI;KAClC,CAAC,CAAC;IAEH,MAAM,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;QACxE,MAAM,SAAS,CAAC;QAEhB,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;YACjB,IAAI;YACJ,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC,IAAI,IAAI,CAAC;IACd,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEtB,MAAM,KAAK,GAAG,sBAAG,CAAC,IAAI,CACpB,YAAY,EACZ,MAAM,EACN;QACE,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,eAAe;KACjD,CACF,CAAC;IAEF,IAAI,IAAI,CAAC,GAAG,EAAE;QACZ,MAAM,aAAa,GAAkB;YACnC,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAA,6BAAmB,EAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC;YACnE,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;YAC5C,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YAChD,MAAM,EAAE,SAAS;SAClB,CAAC;QAEF,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,aAAa,CAAC,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAEtG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;KACvE;IAED,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IAEhB,wCAAwC;IACxC,0BAA0B;IAC1B,wCAAwC;IAExC,MAAM,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;QACvE,MAAM,SAAS,CAAC;QAEhB,IAAI,GAAG,MAAM,IAAI,CAAC;YAChB,IAAI;YACJ,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK;SACN,CAAC,IAAI,IAAI,CAAC;IACb,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEtB,wCAAwC;IACxC,qBAAqB;IACrB,wCAAwC;IAExC,IAAI,GAAG,MAAM,IAAA,qBAAS,EAAC;QACrB,KAAK;QACL,GAAG,EAAE,IAAI;QACT,YAAY,EAAE,gBAAgB;QAC9B,cAAc;QACd,GAAG;QACH,gBAAgB;KACjB,CAAC,CAAC;IAEH,wCAAwC;IACxC,yBAAyB;IACzB,wCAAwC;IAExC,MAAM,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;QACtE,MAAM,SAAS,CAAC;QAEhB,IAAI,GAAG,MAAM,IAAI,CAAC;YAChB,GAAG;YACH,GAAG,EAAE,IAAI;SACV,CAAC,IAAI,IAAI,CAAC;IACb,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEtB,wCAAwC;IACxC,iBAAiB;IACjB,wCAAwC;IAExC,OAAO;QACL,KAAK;QACL,IAAI;QACJ,GAAG,EAAG,sBAAG,CAAC,MAAM,CAAC,KAAK,CAAoB,CAAC,GAAG;KAC/C,CAAC;AACJ,CAAC;AAED,kBAAe,KAAK,CAAC"}
|
|
@@ -7,6 +7,8 @@ const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
|
7
7
|
const errors_1 = require("../../errors");
|
|
8
8
|
const getCookieExpiration_1 = __importDefault(require("../../utilities/getCookieExpiration"));
|
|
9
9
|
const types_1 = require("../../fields/config/types");
|
|
10
|
+
const authenticate_1 = require("../strategies/local/authenticate");
|
|
11
|
+
const generatePasswordSaltHash_1 = require("../strategies/local/generatePasswordSaltHash");
|
|
10
12
|
async function resetPassword(args) {
|
|
11
13
|
if (!Object.prototype.hasOwnProperty.call(args.data, 'token')
|
|
12
14
|
|| !Object.prototype.hasOwnProperty.call(args.data, 'password')) {
|
|
@@ -16,19 +18,24 @@ async function resetPassword(args) {
|
|
|
16
18
|
// /////////////////////////////////////
|
|
17
19
|
// Reset Password
|
|
18
20
|
// /////////////////////////////////////
|
|
19
|
-
|
|
21
|
+
let user = await Model.findOne({
|
|
20
22
|
resetPasswordToken: data.token,
|
|
21
23
|
resetPasswordExpiration: { $gt: Date.now() },
|
|
22
|
-
});
|
|
24
|
+
}).lean();
|
|
25
|
+
user = JSON.parse(JSON.stringify(user));
|
|
23
26
|
if (!user)
|
|
24
27
|
throw new errors_1.APIError('Token is either invalid or has expired.');
|
|
25
|
-
|
|
28
|
+
// TODO: replace this method
|
|
29
|
+
const { salt, hash } = await (0, generatePasswordSaltHash_1.generatePasswordSaltHash)({ password: data.password });
|
|
30
|
+
user.salt = salt;
|
|
31
|
+
user.hash = hash;
|
|
26
32
|
user.resetPasswordExpiration = Date.now();
|
|
27
33
|
if (collectionConfig.auth.verify) {
|
|
28
34
|
user._verified = true;
|
|
29
35
|
}
|
|
30
|
-
await user.
|
|
31
|
-
|
|
36
|
+
let doc = await Model.findByIdAndUpdate({ _id: user.id }, user, { new: true }).lean();
|
|
37
|
+
doc = JSON.parse(JSON.stringify(doc));
|
|
38
|
+
await (0, authenticate_1.authenticateLocalStrategy)({ password: data.password, doc });
|
|
32
39
|
const fieldsToSign = collectionConfig.fields.reduce((signedFields, field) => {
|
|
33
40
|
if ((0, types_1.fieldAffectsData)(field) && field.saveToJWT) {
|
|
34
41
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resetPassword.js","sourceRoot":"","sources":["../../../src/auth/operations/resetPassword.ts"],"names":[],"mappings":";;;;;AAAA,gEAA+B;AAG/B,yCAAwC;AACxC,8FAAsE;AAEtE,qDAA6D;
|
|
1
|
+
{"version":3,"file":"resetPassword.js","sourceRoot":"","sources":["../../../src/auth/operations/resetPassword.ts"],"names":[],"mappings":";;;;;AAAA,gEAA+B;AAG/B,yCAAwC;AACxC,8FAAsE;AAEtE,qDAA6D;AAE7D,mEAA6E;AAC7E,2FAAwF;AAkBxF,KAAK,UAAU,aAAa,CAAC,IAAe;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;WACxD,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;QACjE,MAAM,IAAI,iBAAQ,CAAC,wBAAwB,CAAC,CAAC;KAC9C;IAED,MAAM,EACJ,UAAU,EAAE,EACV,KAAK,EACL,MAAM,EAAE,gBAAgB,GACzB,EACD,GAAG,EAAE,EACH,OAAO,EAAE,EACP,MAAM,EACN,MAAM,GACP,EACD,OAAO,GACR,EACD,cAAc,EACd,IAAI,GACL,GAAG,IAAI,CAAC;IAET,wCAAwC;IACxC,iBAAiB;IACjB,wCAAwC;IAExC,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC;QAC7B,kBAAkB,EAAE,IAAI,CAAC,KAAK;QAC9B,uBAAuB,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;KAC7C,CAAC,CAAC,IAAI,EAAE,CAAC;IAEV,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAExC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,iBAAQ,CAAC,yCAAyC,CAAC,CAAC;IAEzE,4BAA4B;IAC5B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,mDAAwB,EAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IAElF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAEjB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE1C,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACvB;IAED,IAAI,GAAG,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAErF,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IAErC,MAAM,IAAA,wCAAyB,EAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IAElE,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE;QAC1E,IAAI,IAAA,wBAAgB,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE;YAC9C,OAAO;gBACL,GAAG,YAAY;gBACf,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aAC/B,CAAC;SACH;QACD,OAAO,YAAY,CAAC;IACtB,CAAC,EAAE;QACD,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,UAAU,EAAE,gBAAgB,CAAC,IAAI;KAClC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,sBAAG,CAAC,IAAI,CACpB,YAAY,EACZ,MAAM,EACN;QACE,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,eAAe;KACjD,CACF,CAAC;IAEF,IAAI,IAAI,CAAC,GAAG,EAAE;QACZ,MAAM,aAAa,GAAG;YACpB,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAA,6BAAmB,EAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC;YACnE,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;YAC5C,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YAChD,MAAM,EAAE,SAAS;SAClB,CAAC;QAGF,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,aAAa,CAAC,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAEtG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;KACvE;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;IAC5G,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACnC,CAAC;AAED,kBAAe,aAAa,CAAC"}
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const errors_1 = require("../../errors");
|
|
7
7
|
const executeAccess_1 = __importDefault(require("../executeAccess"));
|
|
8
|
+
const resetLoginAttempts_1 = require("../strategies/local/resetLoginAttempts");
|
|
8
9
|
async function unlock(args) {
|
|
9
10
|
if (!Object.prototype.hasOwnProperty.call(args.data, 'email')) {
|
|
10
11
|
throw new errors_1.APIError('Missing email.');
|
|
@@ -24,7 +25,11 @@ async function unlock(args) {
|
|
|
24
25
|
const user = await Model.findOne({ email: data.email.toLowerCase() });
|
|
25
26
|
if (!user)
|
|
26
27
|
return null;
|
|
27
|
-
await
|
|
28
|
+
await (0, resetLoginAttempts_1.resetLoginAttempts)({
|
|
29
|
+
payload: req.payload,
|
|
30
|
+
collection: collectionConfig,
|
|
31
|
+
doc: user,
|
|
32
|
+
});
|
|
28
33
|
return true;
|
|
29
34
|
}
|
|
30
35
|
exports.default = unlock;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unlock.js","sourceRoot":"","sources":["../../../src/auth/operations/unlock.ts"],"names":[],"mappings":";;;;;AAAA,yCAAwC;AACxC,qEAA6C;
|
|
1
|
+
{"version":3,"file":"unlock.js","sourceRoot":"","sources":["../../../src/auth/operations/unlock.ts"],"names":[],"mappings":";;;;;AAAA,yCAAwC;AACxC,qEAA6C;AAG7C,+EAA4E;AAW5E,KAAK,UAAU,MAAM,CAAC,IAAU;IAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;QAC7D,MAAM,IAAI,iBAAQ,CAAC,gBAAgB,CAAC,CAAC;KACtC;IAED,MAAM,EACJ,UAAU,EAAE,EACV,KAAK,EACL,MAAM,EAAE,gBAAgB,GACzB,EACD,GAAG,EACH,cAAc,GACf,GAAG,IAAI,CAAC;IAET,wCAAwC;IACxC,SAAS;IACT,wCAAwC;IAExC,IAAI,CAAC,cAAc,EAAE;QACnB,MAAM,IAAA,uBAAa,EAAC,EAAE,GAAG,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC9D;IAED,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzB,wCAAwC;IACxC,SAAS;IACT,wCAAwC;IAExC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAEtE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,IAAA,uCAAkB,EAAC;QACvB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,UAAU,EAAE,gBAAgB;QAC5B,GAAG,EAAE,IAAI;KACV,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kBAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TypeWithID } from "../../../collections/config/types";
|
|
2
|
+
type Doc = TypeWithID & Record<string, unknown>;
|
|
3
|
+
type Args = {
|
|
4
|
+
doc: Doc;
|
|
5
|
+
password: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const authenticateLocalStrategy: ({ doc, password, }: Args) => Promise<Doc | null>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.authenticateLocalStrategy = void 0;
|
|
7
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
8
|
+
const scmp_1 = __importDefault(require("scmp"));
|
|
9
|
+
const authenticateLocalStrategy = async ({ doc, password, }) => {
|
|
10
|
+
try {
|
|
11
|
+
const salt = doc.salt;
|
|
12
|
+
const hash = doc.hash;
|
|
13
|
+
if (typeof salt === 'string' && typeof hash === 'string') {
|
|
14
|
+
const res = await new Promise((resolve, reject) => {
|
|
15
|
+
crypto_1.default.pbkdf2(password, salt, 25000, 512, 'sha256', (e, hashBuffer) => {
|
|
16
|
+
if (e)
|
|
17
|
+
reject(null);
|
|
18
|
+
if ((0, scmp_1.default)(hashBuffer, Buffer.from(hash, 'hex'))) {
|
|
19
|
+
resolve(doc);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
reject(null);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
return res;
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
exports.authenticateLocalStrategy = authenticateLocalStrategy;
|
|
35
|
+
//# sourceMappingURL=authenticate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../../../../src/auth/strategies/local/authenticate.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAC3B,gDAAuB;AAWhB,MAAM,yBAAyB,GAAG,KAAK,EAAE,EAC9C,GAAG,EACH,QAAQ,GACH,EAAuB,EAAE;IAC9B,IAAI;QACF,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;QACrB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;QAErB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACxD,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC5D,gBAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE;oBACpE,IAAI,CAAC;wBAAE,MAAM,CAAC,IAAI,CAAC,CAAA;oBAEnB,IAAI,IAAA,cAAI,EAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;wBAC9C,OAAO,CAAC,GAAG,CAAC,CAAA;qBACb;yBAAM;wBACL,MAAM,CAAC,IAAI,CAAC,CAAA;qBACb;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAA;YAEF,OAAO,GAAG,CAAA;SACX;QAED,OAAO,IAAI,CAAA;KACZ;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,IAAI,CAAA;KACZ;AACH,CAAC,CAAA;AA5BY,QAAA,yBAAyB,6BA4BrC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generatePasswordSaltHash = void 0;
|
|
7
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
8
|
+
const errors_1 = require("../../../errors");
|
|
9
|
+
const defaultPasswordValidator = (password) => {
|
|
10
|
+
if (!password)
|
|
11
|
+
return 'No password was given';
|
|
12
|
+
if (password.length < 3)
|
|
13
|
+
return 'Password must be at least 3 characters';
|
|
14
|
+
return true;
|
|
15
|
+
};
|
|
16
|
+
function randomBytes() {
|
|
17
|
+
return new Promise((resolve, reject) => crypto_1.default.randomBytes(32, (err, saltBuffer) => (err ? reject(err) : resolve(saltBuffer))));
|
|
18
|
+
}
|
|
19
|
+
function pbkdf2Promisified(password, salt) {
|
|
20
|
+
return new Promise((resolve, reject) => crypto_1.default.pbkdf2(password, salt, 25000, 512, 'sha256', (err, hashRaw) => (err ? reject(err) : resolve(hashRaw))));
|
|
21
|
+
}
|
|
22
|
+
const generatePasswordSaltHash = async ({ password, }) => {
|
|
23
|
+
const validationResult = defaultPasswordValidator(password);
|
|
24
|
+
if (typeof validationResult === 'string') {
|
|
25
|
+
throw new errors_1.ValidationError([{ message: validationResult, field: 'password' }]);
|
|
26
|
+
}
|
|
27
|
+
const saltBuffer = await randomBytes();
|
|
28
|
+
const salt = saltBuffer.toString('hex');
|
|
29
|
+
const hashRaw = await pbkdf2Promisified(password, salt);
|
|
30
|
+
const hash = hashRaw.toString('hex');
|
|
31
|
+
return { salt, hash };
|
|
32
|
+
};
|
|
33
|
+
exports.generatePasswordSaltHash = generatePasswordSaltHash;
|
|
34
|
+
//# sourceMappingURL=generatePasswordSaltHash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generatePasswordSaltHash.js","sourceRoot":"","sources":["../../../../src/auth/strategies/local/generatePasswordSaltHash.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAC3B,4CAAiD;AAEjD,MAAM,wBAAwB,GAAG,CAAC,QAAgB,EAAiB,EAAE;IACnE,IAAI,CAAC,QAAQ;QAAE,OAAO,uBAAuB,CAAA;IAC7C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,wCAAwC,CAAA;IAExE,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,SAAS,WAAW;IAClB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,gBAAM,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAClI,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAE,IAAY;IACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,gBAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACzJ,CAAC;AAMM,MAAM,wBAAwB,GAAG,KAAK,EAAE,EAC7C,QAAQ,GACH,EAA2C,EAAE;IAClD,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAA;IAE3D,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;QACxC,MAAM,IAAI,wBAAe,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;KAC9E;IAED,MAAM,UAAU,GAAG,MAAM,WAAW,EAAE,CAAA;IACtC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEvC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEpC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AACvB,CAAC,CAAA;AAhBY,QAAA,wBAAwB,4BAgBpC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Payload } from "../../..";
|
|
2
|
+
import { SanitizedCollectionConfig, TypeWithID } from "../../../collections/config/types";
|
|
3
|
+
type Args = {
|
|
4
|
+
payload: Payload;
|
|
5
|
+
doc: TypeWithID & Record<string, unknown>;
|
|
6
|
+
collection: SanitizedCollectionConfig;
|
|
7
|
+
};
|
|
8
|
+
export declare const incrementLoginAttempts: ({ payload, doc, collection, }: Args) => Promise<void>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.incrementLoginAttempts = void 0;
|
|
4
|
+
const incrementLoginAttempts = async ({ payload, doc, collection, }) => {
|
|
5
|
+
const { auth: { maxLoginAttempts, lockTime, } } = collection;
|
|
6
|
+
if ('lockUntil' in doc && typeof doc.lockUntil === 'string') {
|
|
7
|
+
const lockUntil = Math.floor(new Date(doc.lockUntil).getTime() / 1000);
|
|
8
|
+
// Expired lock, restart count at 1
|
|
9
|
+
if (lockUntil < Date.now()) {
|
|
10
|
+
await payload.update({
|
|
11
|
+
collection: collection.slug,
|
|
12
|
+
id: doc.id,
|
|
13
|
+
data: {
|
|
14
|
+
loginAttempts: 1,
|
|
15
|
+
lockUntil: null,
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const data = {
|
|
22
|
+
loginAttempts: Number(doc.loginAttempts) + 1,
|
|
23
|
+
};
|
|
24
|
+
// Lock the account if at max attempts and not already locked
|
|
25
|
+
if (typeof doc.loginAttempts === 'number' && doc.loginAttempts + 1 >= maxLoginAttempts) {
|
|
26
|
+
const lockUntil = new Date((Date.now() + lockTime));
|
|
27
|
+
data.lockUntil = lockUntil;
|
|
28
|
+
}
|
|
29
|
+
await payload.update({
|
|
30
|
+
collection: collection.slug,
|
|
31
|
+
id: doc.id,
|
|
32
|
+
data,
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
exports.incrementLoginAttempts = incrementLoginAttempts;
|
|
36
|
+
//# sourceMappingURL=incrementLoginAttempts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incrementLoginAttempts.js","sourceRoot":"","sources":["../../../../src/auth/strategies/local/incrementLoginAttempts.ts"],"names":[],"mappings":";;;AASO,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAC3C,OAAO,EACP,GAAG,EACH,UAAU,GACL,EAAiB,EAAE;IACxB,MAAM,EACJ,IAAI,EAAE,EACJ,gBAAgB,EAChB,QAAQ,GACT,EACF,GAAG,UAAU,CAAA;IAEd,IAAI,WAAW,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAA;QAEtE,mCAAmC;QACnC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;YAC1B,MAAM,OAAO,CAAC,MAAM,CAAC;gBACnB,UAAU,EAAE,UAAU,CAAC,IAAI;gBAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,EAAE;oBACJ,aAAa,EAAE,CAAC;oBAChB,SAAS,EAAE,IAAI;iBAChB;aACF,CAAC,CAAA;SACH;QAED,OAAM;KACP;IAED,MAAM,IAAI,GAA4B;QACpC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC;KAC7C,CAAA;IAED,6DAA6D;IAC7D,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,IAAI,GAAG,CAAC,aAAa,GAAG,CAAC,IAAI,gBAAgB,EAAE;QACtF,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAA;QACnD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;KAC3B;IAGD,MAAM,OAAO,CAAC,MAAM,CAAC;QACnB,UAAU,EAAE,UAAU,CAAC,IAAI;QAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI;KACL,CAAC,CAAA;AACJ,CAAC,CAAA;AA9CY,QAAA,sBAAsB,0BA8ClC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Payload } from '../../..';
|
|
2
|
+
import { SanitizedCollectionConfig } from '../../../collections/config/types';
|
|
3
|
+
type Args = {
|
|
4
|
+
collection: SanitizedCollectionConfig;
|
|
5
|
+
doc: Record<string, unknown>;
|
|
6
|
+
password: string;
|
|
7
|
+
payload: Payload;
|
|
8
|
+
};
|
|
9
|
+
export declare const registerLocalStrategy: ({ collection, doc, password, payload, }: Args) => Promise<Record<string, unknown>>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerLocalStrategy = void 0;
|
|
4
|
+
const errors_1 = require("../../../errors");
|
|
5
|
+
const generatePasswordSaltHash_1 = require("./generatePasswordSaltHash");
|
|
6
|
+
const registerLocalStrategy = async ({ collection, doc, password, payload, }) => {
|
|
7
|
+
const existingUser = await payload.find({
|
|
8
|
+
collection: collection.slug,
|
|
9
|
+
depth: 0,
|
|
10
|
+
where: {
|
|
11
|
+
email: {
|
|
12
|
+
equals: doc.email,
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
if (existingUser.docs.length > 0) {
|
|
17
|
+
throw new errors_1.ValidationError([{ message: 'A user with the given email is already registered', field: 'email' }]);
|
|
18
|
+
}
|
|
19
|
+
const { salt, hash } = await (0, generatePasswordSaltHash_1.generatePasswordSaltHash)({ password });
|
|
20
|
+
const result = await payload.collections[collection.slug].Model.create({
|
|
21
|
+
...doc,
|
|
22
|
+
salt,
|
|
23
|
+
hash
|
|
24
|
+
});
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
exports.registerLocalStrategy = registerLocalStrategy;
|
|
28
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../../src/auth/strategies/local/register.ts"],"names":[],"mappings":";;;AAAA,4CAAiD;AAGjD,yEAAsE;AAS/D,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAC1C,UAAU,EACV,GAAG,EACH,QAAQ,EACR,OAAO,GACF,EAAoC,EAAE;IAC3C,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;QACtC,UAAU,EAAE,UAAU,CAAC,IAAI;QAC3B,KAAK,EAAE,CAAC;QACR,KAAK,EAAE;YACL,KAAK,EAAE;gBACL,MAAM,EAAE,GAAG,CAAC,KAAK;aAClB;SACF;KACF,CAAC,CAAA;IAEF,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QAChC,MAAM,IAAI,wBAAe,CAAC,CAAC,EAAE,OAAO,EAAE,mDAAmD,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;KAC9G;IAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,mDAAwB,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;IAEnE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QACrE,GAAG,GAAG;QACN,IAAI;QACJ,IAAI;KACL,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AA7BY,QAAA,qBAAqB,yBA6BjC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Payload } from "../../..";
|
|
2
|
+
import { SanitizedCollectionConfig, TypeWithID } from "../../../collections/config/types";
|
|
3
|
+
type Args = {
|
|
4
|
+
payload: Payload;
|
|
5
|
+
doc: TypeWithID & Record<string, unknown>;
|
|
6
|
+
collection: SanitizedCollectionConfig;
|
|
7
|
+
};
|
|
8
|
+
export declare const resetLoginAttempts: ({ payload, doc, collection, }: Args) => Promise<void>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resetLoginAttempts = void 0;
|
|
4
|
+
const resetLoginAttempts = async ({ payload, doc, collection, }) => {
|
|
5
|
+
await payload.update({
|
|
6
|
+
collection: collection.slug,
|
|
7
|
+
id: doc.id,
|
|
8
|
+
data: {
|
|
9
|
+
loginAttempts: 0,
|
|
10
|
+
lockUntil: null,
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
exports.resetLoginAttempts = resetLoginAttempts;
|
|
15
|
+
//# sourceMappingURL=resetLoginAttempts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resetLoginAttempts.js","sourceRoot":"","sources":["../../../../src/auth/strategies/local/resetLoginAttempts.ts"],"names":[],"mappings":";;;AASO,MAAM,kBAAkB,GAAG,KAAK,EAAE,EACvC,OAAO,EACP,GAAG,EACH,UAAU,GACL,EAAiB,EAAE;IACxB,MAAM,OAAO,CAAC,MAAM,CAAC;QACnB,UAAU,EAAE,UAAU,CAAC,IAAI;QAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE;YACJ,aAAa,EAAE,CAAC;YAChB,SAAS,EAAE,IAAI;SAChB;KACF,CAAC,CAAA;AACJ,CAAC,CAAA;AAbY,QAAA,kBAAkB,sBAa9B"}
|
|
@@ -11,25 +11,21 @@ const logger_1 = __importDefault(require("../utilities/logger"));
|
|
|
11
11
|
const load_1 = __importDefault(require("../config/load"));
|
|
12
12
|
const entityToJSONSchema_1 = require("../utilities/entityToJSONSchema");
|
|
13
13
|
function configToJsonSchema(config) {
|
|
14
|
+
const fieldDefinitionsMap = new Map(); // mutable
|
|
15
|
+
const entityDefinitions = [...config.globals, ...config.collections].reduce((acc, entity) => {
|
|
16
|
+
acc[entity.slug] = (0, entityToJSONSchema_1.entityToJSONSchema)(config, entity, fieldDefinitionsMap);
|
|
17
|
+
return acc;
|
|
18
|
+
}, {});
|
|
14
19
|
return {
|
|
15
20
|
title: 'Config',
|
|
16
21
|
type: 'object',
|
|
17
22
|
additionalProperties: false,
|
|
18
23
|
properties: {
|
|
19
|
-
collections: (0, entityToJSONSchema_1.
|
|
20
|
-
globals: (0, entityToJSONSchema_1.
|
|
24
|
+
collections: (0, entityToJSONSchema_1.generateEntitySchemas)(config.collections),
|
|
25
|
+
globals: (0, entityToJSONSchema_1.generateEntitySchemas)(config.globals),
|
|
21
26
|
},
|
|
22
27
|
required: ['collections', 'globals'],
|
|
23
|
-
definitions: Object.fromEntries(
|
|
24
|
-
...config.globals.map((global) => [
|
|
25
|
-
global.slug,
|
|
26
|
-
(0, entityToJSONSchema_1.entityToJSONSchema)(config, global),
|
|
27
|
-
]),
|
|
28
|
-
...config.collections.map((collection) => [
|
|
29
|
-
collection.slug,
|
|
30
|
-
(0, entityToJSONSchema_1.entityToJSONSchema)(config, collection),
|
|
31
|
-
]),
|
|
32
|
-
]),
|
|
28
|
+
definitions: { ...entityDefinitions, ...Object.fromEntries(fieldDefinitionsMap) },
|
|
33
29
|
};
|
|
34
30
|
}
|
|
35
31
|
async function generateTypes() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateTypes.js","sourceRoot":"","sources":["../../src/bin/generateTypes.ts"],"names":[],"mappings":";;;;;;AAAA,sCAAsC;AACtC,4CAAoB;AAEpB,yEAAoD;AACpD,iEAAyC;AAEzC,0DAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"generateTypes.js","sourceRoot":"","sources":["../../src/bin/generateTypes.ts"],"names":[],"mappings":";;;;;;AAAA,sCAAsC;AACtC,4CAAoB;AAEpB,yEAAoD;AACpD,iEAAyC;AAEzC,0DAAwC;AACxC,wEAA4F;AAI5F,SAAS,kBAAkB,CAAC,MAAuB;IACjD,MAAM,mBAAmB,GAA6B,IAAI,GAAG,EAAE,CAAC,CAAC,UAAU;IAC3E,MAAM,iBAAiB,GAAoB,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QAC3G,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAA,uCAAkB,EAAC,MAAM,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAC3E,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE;YACV,WAAW,EAAE,IAAA,0CAAqB,EAAC,MAAM,CAAC,WAAW,CAAC;YACtD,OAAO,EAAE,IAAA,0CAAqB,EAAC,MAAM,CAAC,OAAO,CAAC;SAC/C;QACD,QAAQ,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC;QACpC,WAAW,EAAE,EAAE,GAAG,iBAAiB,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE;KAClF,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,aAAa;IACjC,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;IACxB,MAAM,MAAM,GAAG,MAAM,IAAA,cAAU,GAAE,CAAC;IAClC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;IAEtF,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IAEjE,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE9C,IAAA,mCAAO,EAAC,UAAU,EAAE,QAAQ,EAAE;QAC5B,aAAa,EAAE,iOAAiO;QAChP,KAAK,EAAE;YACL,WAAW,EAAE,IAAI;SAClB;KACF,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACnB,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC;AAlBD,sCAkBC;AAED,6CAA6C;AAC7C,IAAI,MAAM,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE;IACjC,aAAa,EAAE,CAAC;CACjB"}
|
|
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const mongoose_1 = __importDefault(require("mongoose"));
|
|
7
7
|
const mongoose_paginate_v2_1 = __importDefault(require("mongoose-paginate-v2"));
|
|
8
|
-
const passport_local_mongoose_1 = __importDefault(require("passport-local-mongoose"));
|
|
9
8
|
const mongoose_aggregate_paginate_v2_1 = __importDefault(require("mongoose-aggregate-paginate-v2"));
|
|
10
9
|
const buildCollectionFields_1 = require("../versions/buildCollectionFields");
|
|
11
10
|
const buildQuery_1 = __importDefault(require("../mongoose/buildQuery"));
|
|
@@ -17,37 +16,6 @@ function initCollectionsLocal(ctx) {
|
|
|
17
16
|
var _a;
|
|
18
17
|
const formattedCollection = collection;
|
|
19
18
|
const schema = (0, buildSchema_1.default)(formattedCollection, ctx.config);
|
|
20
|
-
if (collection.auth && !collection.auth.disableLocalStrategy) {
|
|
21
|
-
schema.plugin(passport_local_mongoose_1.default, {
|
|
22
|
-
usernameField: 'email',
|
|
23
|
-
});
|
|
24
|
-
const { maxLoginAttempts, lockTime } = collection.auth;
|
|
25
|
-
if (maxLoginAttempts > 0) {
|
|
26
|
-
// eslint-disable-next-line func-names
|
|
27
|
-
schema.methods.incLoginAttempts = function (cb) {
|
|
28
|
-
// Expired lock, restart count at 1
|
|
29
|
-
if (this.lockUntil && this.lockUntil < Date.now()) {
|
|
30
|
-
return this.updateOne({
|
|
31
|
-
$set: { loginAttempts: 1 },
|
|
32
|
-
$unset: { lockUntil: 1 },
|
|
33
|
-
}, cb);
|
|
34
|
-
}
|
|
35
|
-
const updates = { $inc: { loginAttempts: 1 } };
|
|
36
|
-
// Lock the account if at max attempts and not already locked
|
|
37
|
-
if (this.loginAttempts + 1 >= maxLoginAttempts) {
|
|
38
|
-
updates.$set = { lockUntil: Date.now() + lockTime };
|
|
39
|
-
}
|
|
40
|
-
return this.updateOne(updates, cb);
|
|
41
|
-
};
|
|
42
|
-
// eslint-disable-next-line func-names
|
|
43
|
-
schema.methods.resetLoginAttempts = function (cb) {
|
|
44
|
-
return this.updateOne({
|
|
45
|
-
$set: { loginAttempts: 0 },
|
|
46
|
-
$unset: { lockUntil: 1 },
|
|
47
|
-
}, cb);
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
19
|
if (collection.versions) {
|
|
52
20
|
const versionModelName = (0, getVersionsModelName_1.getVersionsModelName)(collection);
|
|
53
21
|
const versionCollectionFields = (0, buildCollectionFields_1.buildVersionCollectionFields)(collection);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initLocal.js","sourceRoot":"","sources":["../../src/collections/initLocal.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"initLocal.js","sourceRoot":"","sources":["../../src/collections/initLocal.ts"],"names":[],"mappings":";;;;;AAAA,wDAAgC;AAChC,gFAA4C;AAC5C,oGAAuE;AACvE,6EAAiF;AACjF,wEAAyD;AACzD,gEAAkD;AAClD,0EAAkD;AAGlD,2EAAwE;AAExE,SAAwB,oBAAoB,CAAC,GAAY;IACvD,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAqC,EAAE,EAAE;;QAC5F,MAAM,mBAAmB,GAAG,UAAU,CAAC;QAEvC,MAAM,MAAM,GAAG,IAAA,qBAAqB,EAAC,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAEtE,IAAI,UAAU,CAAC,QAAQ,EAAE;YACvB,MAAM,gBAAgB,GAAG,IAAA,2CAAoB,EAAC,UAAU,CAAC,CAAC;YAE1D,MAAM,uBAAuB,GAAG,IAAA,oDAA4B,EAAC,UAAU,CAAC,CAAC;YAEzE,MAAM,aAAa,GAAG,IAAA,qBAAW,EAC/B,GAAG,CAAC,MAAM,EACV,uBAAuB,EACvB;gBACE,aAAa,EAAE,IAAI;gBACnB,aAAa,EAAE,IAAI;gBACnB,OAAO,EAAE;oBACP,UAAU,EAAE,KAAK;oBACjB,QAAQ,EAAE,KAAK;iBAChB;aACF,CACF,CAAC;YAEF,IAAI,UAAU,CAAC,OAAO,EAAE;gBACtB,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBACnC,+CAA+C;oBAC/C,MAAM,YAAY,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;oBAC5D,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;wBACpD,YAAY,CAAC,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;oBAChD,CAAC,CAAC,CAAC;oBACH,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;gBACjE,CAAC,CAAC,CAAC;aACJ;YAED,aAAa,CAAC,MAAM,CAAC,8BAAQ,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;iBACxD,MAAM,CAAC,IAAA,oBAAmB,EAAC,EAAE,cAAc,EAAE,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC;YAE7G,IAAI,MAAA,UAAU,CAAC,QAAQ,0CAAE,MAAM,EAAE;gBAC/B,aAAa,CAAC,MAAM,CAAC,wCAAyB,CAAC,CAAC;aACjD;YAED,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,kBAAQ,CAAC,KAAK,CAAC,gBAAgB,EAAE,aAAa,CAAoB,CAAC;SACpG;QAGD,GAAG,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG;YAC1C,KAAK,EAAE,kBAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAoB;YAC1E,MAAM,EAAE,mBAAmB;SAC5B,CAAC;QAEF,OAAO,mBAAmB,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AArDD,uCAqDC"}
|
|
@@ -19,6 +19,7 @@ const afterRead_1 = require("../../fields/hooks/afterRead");
|
|
|
19
19
|
const generateFileData_1 = require("../../uploads/generateFileData");
|
|
20
20
|
const saveVersion_1 = require("../../versions/saveVersion");
|
|
21
21
|
const mapAsync_1 = require("../../utilities/mapAsync");
|
|
22
|
+
const register_1 = require("../../auth/strategies/local/register");
|
|
22
23
|
const unlinkFile = (0, util_1.promisify)(fs_1.default.unlink);
|
|
23
24
|
async function create(incomingArgs) {
|
|
24
25
|
var _a;
|
|
@@ -127,16 +128,12 @@ async function create(incomingArgs) {
|
|
|
127
128
|
resultWithLocales._verified = Boolean(resultWithLocales._verified) || false;
|
|
128
129
|
resultWithLocales._verificationToken = crypto_1.default.randomBytes(20).toString('hex');
|
|
129
130
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
throw new errors_1.ValidationError([{ message: error.message, field: 'email' }], req.t);
|
|
137
|
-
}
|
|
138
|
-
throw error;
|
|
139
|
-
}
|
|
131
|
+
doc = await (0, register_1.registerLocalStrategy)({
|
|
132
|
+
collection: collectionConfig,
|
|
133
|
+
doc: resultWithLocales,
|
|
134
|
+
payload: req.payload,
|
|
135
|
+
password: data.password,
|
|
136
|
+
});
|
|
140
137
|
}
|
|
141
138
|
else {
|
|
142
139
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/collections/operations/create.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,+BAAiC;AAEjC,oDAA4B;AAG5B,6EAAqD;AACrD,oGAA4E;AAE5E,yCAA+C;AAE/C,6FAAqE;AAIrE,qDAA6D;AAC7D,2DAAwD;AACxD,kEAA+D;AAC/D,sEAAmE;AACnE,gEAA6D;AAC7D,4DAAyD;AACzD,qEAAkE;AAClE,4DAAyD;AACzD,uDAAoD;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/collections/operations/create.ts"],"names":[],"mappings":"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"}
|