handling of form completion in registration interstitial

v1.18.x
Julian Lam 9 years ago
parent d2926f4fe7
commit 041670bfe9

@ -129,8 +129,35 @@ function addToApprovalQueue(req, userData, callback) {
}
authenticationController.registerComplete = function(req, res, next) {
console.log(req.data);
res.sendStatus(200);
// For the interstitials that respond, execute the callback with the form body
plugins.fireHook('filter:register.interstitial', {
userData: req.session.registration,
interstitials: []
}, function(err, data) {
var callbacks = data.interstitials.reduce(function(memo, cur) {
if (cur.hasOwnProperty('callback') && typeof cur.callback === 'function') {
memo.push(async.apply(cur.callback, req.session.registration, req.body));
}
return memo;
}, []);
async.parallel(callbacks, function(err) {
if (err) {
req.flash('error', err.message);
return res.redirect(nconf.get('relative_path') + '/register/complete');
}
// Clear registration data in session
delete req.session.registration;
if (req.session.returnTo) {
res.redirect(req.session.returnTo);
} else {
res.redirect(nconf.get('relative_path') + '/');
}
});
});
};
authenticationController.login = function(req, res, next) {

@ -194,6 +194,10 @@ Controllers.registerInterstitial = function(req, res, next) {
userData: req.session.registration,
interstitials: []
}, function(err, data) {
if (!data.interstitials.length) {
return next();
}
var renders = data.interstitials.map(function(interstitial) {
return async.apply(req.app.render.bind(req.app), interstitial.template, interstitial.data)
});

Loading…
Cancel
Save