payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
49 lines (48 loc) • 4.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "registerLocalStrategy", {
enumerable: true,
get: function() {
return registerLocalStrategy;
}
});
const _errors = require("../../../errors");
const _generatePasswordSaltHash = require("./generatePasswordSaltHash");
const registerLocalStrategy = async ({ collection, doc, password, payload, req })=>{
const existingUser = await payload.find({
collection: collection.slug,
depth: 0,
where: {
email: {
equals: doc.email
}
}
});
if (existingUser.docs.length > 0) {
throw new _errors.ValidationError([
{
field: 'email',
message: 'A user with the given email is already registered'
}
]);
}
const { hash, salt } = await (0, _generatePasswordSaltHash.generatePasswordSaltHash)({
password
});
const sanitizedDoc = {
...doc
};
if (sanitizedDoc.password) delete sanitizedDoc.password;
return payload.db.create({
collection: collection.slug,
data: {
...sanitizedDoc,
hash,
salt
},
req
});
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hdXRoL3N0cmF0ZWdpZXMvbG9jYWwvcmVnaXN0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXlsb2FkIH0gZnJvbSAnLi4vLi4vLi4nXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfSBmcm9tICcuLi8uLi8uLi9jb2xsZWN0aW9ucy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vZXhwcmVzcy90eXBlcydcblxuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi4vLi4vLi4vZXJyb3JzJ1xuaW1wb3J0IHsgZ2VuZXJhdGVQYXNzd29yZFNhbHRIYXNoIH0gZnJvbSAnLi9nZW5lcmF0ZVBhc3N3b3JkU2FsdEhhc2gnXG5cbnR5cGUgQXJncyA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZ1xuICBkb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIHBhc3N3b3JkOiBzdHJpbmdcbiAgcGF5bG9hZDogUGF5bG9hZFxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG59XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlckxvY2FsU3RyYXRlZ3kgPSBhc3luYyAoe1xuICBjb2xsZWN0aW9uLFxuICBkb2MsXG4gIHBhc3N3b3JkLFxuICBwYXlsb2FkLFxuICByZXEsXG59OiBBcmdzKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPT4ge1xuICBjb25zdCBleGlzdGluZ1VzZXIgPSBhd2FpdCBwYXlsb2FkLmZpbmQoe1xuICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb24uc2x1ZyxcbiAgICBkZXB0aDogMCxcbiAgICB3aGVyZToge1xuICAgICAgZW1haWw6IHtcbiAgICAgICAgZXF1YWxzOiBkb2MuZW1haWwsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pXG5cbiAgaWYgKGV4aXN0aW5nVXNlci5kb2NzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFtcbiAgICAgIHsgZmllbGQ6ICdlbWFpbCcsIG1lc3NhZ2U6ICdBIHVzZXIgd2l0aCB0aGUgZ2l2ZW4gZW1haWwgaXMgYWxyZWFkeSByZWdpc3RlcmVkJyB9LFxuICAgIF0pXG4gIH1cblxuICBjb25zdCB7IGhhc2gsIHNhbHQgfSA9IGF3YWl0IGdlbmVyYXRlUGFzc3dvcmRTYWx0SGFzaCh7IHBhc3N3b3JkIH0pXG5cbiAgY29uc3Qgc2FuaXRpemVkRG9jID0geyAuLi5kb2MgfVxuICBpZiAoc2FuaXRpemVkRG9jLnBhc3N3b3JkKSBkZWxldGUgc2FuaXRpemVkRG9jLnBhc3N3b3JkXG5cbiAgcmV0dXJuIHBheWxvYWQuZGIuY3JlYXRlKHtcbiAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uLnNsdWcsXG4gICAgZGF0YToge1xuICAgICAgLi4uc2FuaXRpemVkRG9jLFxuICAgICAgaGFzaCxcbiAgICAgIHNhbHQsXG4gICAgfSxcbiAgICByZXEsXG4gIH0pXG59XG4iXSwibmFtZXMiOlsicmVnaXN0ZXJMb2NhbFN0cmF0ZWd5IiwiY29sbGVjdGlvbiIsImRvYyIsInBhc3N3b3JkIiwicGF5bG9hZCIsInJlcSIsImV4aXN0aW5nVXNlciIsImZpbmQiLCJzbHVnIiwiZGVwdGgiLCJ3aGVyZSIsImVtYWlsIiwiZXF1YWxzIiwiZG9jcyIsImxlbmd0aCIsIlZhbGlkYXRpb25FcnJvciIsImZpZWxkIiwibWVzc2FnZSIsImhhc2giLCJzYWx0IiwiZ2VuZXJhdGVQYXNzd29yZFNhbHRIYXNoIiwic2FuaXRpemVkRG9jIiwiZGIiLCJjcmVhdGUiLCJkYXRhIl0sIm1hcHBpbmdzIjoiOzs7OytCQWVhQTs7O2VBQUFBOzs7d0JBWG1COzBDQUNTO0FBVWxDLE1BQU1BLHdCQUF3QixPQUFPLEVBQzFDQyxVQUFVLEVBQ1ZDLEdBQUcsRUFDSEMsUUFBUSxFQUNSQyxPQUFPLEVBQ1BDLEdBQUcsRUFDRTtJQUNMLE1BQU1DLGVBQWUsTUFBTUYsUUFBUUcsSUFBSSxDQUFDO1FBQ3RDTixZQUFZQSxXQUFXTyxJQUFJO1FBQzNCQyxPQUFPO1FBQ1BDLE9BQU87WUFDTEMsT0FBTztnQkFDTEMsUUFBUVYsSUFBSVMsS0FBSztZQUNuQjtRQUNGO0lBQ0Y7SUFFQSxJQUFJTCxhQUFhTyxJQUFJLENBQUNDLE1BQU0sR0FBRyxHQUFHO1FBQ2hDLE1BQU0sSUFBSUMsdUJBQWUsQ0FBQztZQUN4QjtnQkFBRUMsT0FBTztnQkFBU0MsU0FBUztZQUFvRDtTQUNoRjtJQUNIO0lBRUEsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksRUFBRSxHQUFHLE1BQU1DLElBQUFBLGtEQUF3QixFQUFDO1FBQUVqQjtJQUFTO0lBRWpFLE1BQU1rQixlQUFlO1FBQUUsR0FBR25CLEdBQUc7SUFBQztJQUM5QixJQUFJbUIsYUFBYWxCLFFBQVEsRUFBRSxPQUFPa0IsYUFBYWxCLFFBQVE7SUFFdkQsT0FBT0MsUUFBUWtCLEVBQUUsQ0FBQ0MsTUFBTSxDQUFDO1FBQ3ZCdEIsWUFBWUEsV0FBV08sSUFBSTtRQUMzQmdCLE1BQU07WUFDSixHQUFHSCxZQUFZO1lBQ2ZIO1lBQ0FDO1FBQ0Y7UUFDQWQ7SUFDRjtBQUNGIn0=