@qelos/auth
Version:
Express Passport authentication service
47 lines (46 loc) • 1.74 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.signup = void 0;
const passport_1 = __importDefault(require("passport"));
const api_kit_1 = require("@qelos/api-kit");
const signin_signup_token_1 = require("./signin-signup-token");
const req_host_1 = require("../services/req-host");
function signup(req, res, next) {
const validationErrors = (0, signin_signup_token_1.validateSignUpForm)(req.body);
if (Object.keys(validationErrors).length > 0) {
return res.json({ errors: validationErrors });
}
return passport_1.default.authenticate('local-signup', (err, data) => {
if (err) {
if (err.name === 'MongoError' && err.code === 11000) {
// the 11000 Mongo code is for a duplication email error
return res.json({
errors: {
email: 'DUPLICATED_EMAIL'
}
});
}
return res.json({
errors: {
'': 'FORM_SUBMISSION_FAILED'
}
});
}
(0, signin_signup_token_1.tokenPayload)((0, req_host_1.getRequestHost)(req), res, data);
(0, api_kit_1.emitPlatformEvent)({
tenant: req.headers.tenant,
user: data.user._id,
source: 'auth',
kind: 'signup',
eventName: 'user-registered',
description: 'user registered',
metadata: {
user: data.user,
}
});
})(req, res, next);
}
exports.signup = signup;