Merge pull request #1533 from akhoury/master

captcha support
v1.18.x
Julian Lam 11 years ago
commit e43ebb0423

@ -24,7 +24,7 @@ var socket,
reconnecting = false; reconnecting = false;
// Rejoin room that was left when we disconnected // Rejoin room that was left when we disconnected
var url_parts = document.location.pathname.slice(RELATIVE_PATH.length).split('/').slice(1); var url_parts = window.location.pathname.slice(RELATIVE_PATH.length).split('/').slice(1);
var room; var room;
switch(url_parts[0]) { switch(url_parts[0]) {
@ -512,7 +512,10 @@ var socket,
app.load = function() { app.load = function() {
$('document').ready(function () { $('document').ready(function () {
var url = window.location.pathname.slice(1), var url = window.location.pathname.slice(1),
tpl_url = ajaxify.getTemplateMapping(url); search = window.location.search,
hash = window.location.hash,
tpl_url = ajaxify.getTemplateMapping(url),
$window = $(window);
url = url.replace(/\/$/, ""); url = url.replace(/\/$/, "");
@ -520,7 +523,7 @@ var socket,
url = url.slice(RELATIVE_PATH.length); url = url.slice(RELATIVE_PATH.length);
} }
$(window).trigger('action:ajaxify.start', { $window.trigger('action:ajaxify.start', {
url: url url: url
}); });
@ -532,11 +535,11 @@ var socket,
$('#logout-link').on('click', app.logout); $('#logout-link').on('click', app.logout);
$(window).blur(function(){ $window.blur(function(){
app.isFocused = false; app.isFocused = false;
}); });
$(window).focus(function(){ $window.focus(function(){
app.isFocused = true; app.isFocused = true;
app.alternatingTitle(''); app.alternatingTitle('');
}); });
@ -549,21 +552,20 @@ var socket,
ajaxify.widgets.render(tpl_url, url); ajaxify.widgets.render(tpl_url, url);
if (window.history && window.history.replaceState) { if (window.history && window.history.replaceState) {
var hash = window.location.hash ? window.location.hash : '';
window.history.replaceState({ window.history.replaceState({
url: url + hash url: url + search + hash
}, url, RELATIVE_PATH + '/' + url + hash); }, url, RELATIVE_PATH + '/' + url + search + hash);
} }
ajaxify.loadScript(tpl_url, function() { ajaxify.loadScript(tpl_url, function() {
$(window).trigger('action:ajaxify.end', { $window.trigger('action:ajaxify.end', {
url: url url: url
}); });
}); });
}); });
}; };
showWelcomeMessage = location.href.indexOf('loggedin') !== -1; showWelcomeMessage = window.location.href.indexOf('loggedin') !== -1;
app.loadConfig(); app.loadConfig();
app.alternatingTitle(''); app.alternatingTitle('');

@ -272,6 +272,87 @@
return env; return env;
} }
} }
},
// get all the url params in a single key/value hash
params: function(options) {
var a, hash = {}, params;
options = options || {};
options.skipToType = options.skipToType || {};
if (options.url) {
a = utils.urlToLocation(options.url);
}
params = (a ? a.search : window.location.search).substring(1).split("&");
params.forEach(function(param) {
var val = param.split('='),
key = decodeURI(val[0]),
value = options.skipToType[key] ? decodeURI(val[1]) : utils.toType(decodeURI(val[1]));
if (key)
hash[key] = value;
});
return hash;
},
param: function(key) {
return this.params()[key];
},
urlToLocation: function(url) {
var a = document.createElement('a');
a.href = url;
return a;
},
// return boolean if string 'true' or string 'false', or if a parsable string which is a number
// also supports JSON object and/or arrays parsing
toType: function(str) {
var type = typeof str;
if (type !== 'string') {
return str;
} else {
var nb = parseFloat(str);
if (!isNaN(nb) && isFinite(str))
return nb;
if (str === 'false')
return false;
if (str === 'true')
return true;
try {
str = JSON.parse(str);
} catch (e) {}
return str;
}
},
// Safely get/set chained properties on an object
// set example: utils.props(A, 'a.b.c.d', 10) // sets A to {a: {b: {c: {d: 10}}}}, and returns 10
// get example: utils.props(A, 'a.b.c') // returns {d: 10}
// get example: utils.props(A, 'a.b.c.foo.bar') // returns undefined without throwing a TypeError
// credits to github.com/gkindel
props: function(obj, props, value) {
if(obj === undefined)
obj = window;
if(props == null)
return undefined;
var i = props.indexOf('.');
if( i == -1 ) {
if(value !== undefined)
obj[props] = value;
return obj[props];
}
var prop = props.slice(0, i),
newProps = props.slice(i + 1);
if(props !== undefined && !(obj[prop] instanceof Object) )
obj[prop] = {};
return util.props(obj[prop], newProps, value);
} }
}; };

@ -207,7 +207,12 @@ Controllers.register = function(req, res, next) {
data.minimumPasswordLength = meta.config.minimumPasswordLength; data.minimumPasswordLength = meta.config.minimumPasswordLength;
data.termsOfUse = meta.config.termsOfUse; data.termsOfUse = meta.config.termsOfUse;
res.render('register', data); plugins.fireHook('filter:register.build', req, res, data, function(err, data) {
if (err && process.env === 'development') {
winston.warn(JSON.stringify(err));
}
res.render('register', data);
});
}; };

@ -295,14 +295,14 @@ var fs = require('fs'),
}; };
Plugins.fireHook = function(hook) { Plugins.fireHook = function(hook) {
var callback = typeof arguments[arguments.length-1] === "function" ? arguments[arguments.length-1] : null, var callback = typeof arguments[arguments.length-1] === 'function' ? arguments[arguments.length-1] : null,
args = arguments.length ? Array.prototype.slice.call(arguments, 1) : []; args = arguments.length ? Array.prototype.slice.call(arguments, 1) : [];
if (callback) { if (callback) {
args.pop(); args.pop();
} }
hookList = Plugins.loadedHooks[hook]; var hookList = Plugins.loadedHooks[hook];
if (hookList && Array.isArray(hookList)) { if (hookList && Array.isArray(hookList)) {
// if (global.env === 'development') winston.info('[plugins] Firing hook: \'' + hook + '\''); // if (global.env === 'development') winston.info('[plugins] Firing hook: \'' + hook + '\'');
@ -334,7 +334,7 @@ var fs = require('fs'),
}, function(err, values) { }, function(err, values) {
if (err) { if (err) {
if (global.env === 'development') { if (global.env === 'development') {
winston.info('[plugins] Problem executing hook: ' + hook); winston.info('[plugins] Problem executing hook: ' + hook + ' err: ' + JSON.stringify(err));
} }
} }

@ -73,13 +73,12 @@
var userData = { var userData = {
username: req.body.username, username: req.body.username,
password: req.body.password, password: req.body.password,
email: req.body.email, email: req.body.email
ip: req.ip
}; };
plugins.fireHook('filter:register.check', userData, function(err, userData) { plugins.fireHook('filter:register.check', req, res, userData, function(err, userData) {
if (err) { if (err) {
return res.redirect(nconf.get('relative_path') + '/register'); return res.redirect(nconf.get('relative_path') + '/register' + (err.message ? '?error=' + err.message : ''));
} }
user.create(userData, function(err, uid) { user.create(userData, function(err, uid) {

Loading…
Cancel
Save