mod_register_web/mod_register_web.lua
changeset 3728 1c3c7d73c5a6
parent 3683 f9a93d7b6c50
child 3729 19e43b7a969d
equal deleted inserted replaced
3727:427879b46061 3728:1c3c7d73c5a6
    37 end
    37 end
    38 
    38 
    39 local register_tpl = get_template "register";
    39 local register_tpl = get_template "register";
    40 local success_tpl = get_template "success";
    40 local success_tpl = get_template "success";
    41 
    41 
       
    42 -- COMPAT `or request.conn:ip()`
       
    43 
    42 if next(captcha_options) ~= nil then
    44 if next(captcha_options) ~= nil then
    43 	local recaptcha_tpl = get_template "recaptcha";
    45 	local recaptcha_tpl = get_template "recaptcha";
    44 
    46 
    45 	function generate_captcha(display_options)
    47 	function generate_captcha(display_options)
    46 		return recaptcha_tpl.apply(setmetatable({
    48 		return recaptcha_tpl.apply(setmetatable({
    55 	end
    57 	end
    56 	function verify_captcha(request, form, callback)
    58 	function verify_captcha(request, form, callback)
    57 		http.request("https://www.google.com/recaptcha/api/siteverify", {
    59 		http.request("https://www.google.com/recaptcha/api/siteverify", {
    58 			body = http.formencode {
    60 			body = http.formencode {
    59 				secret = captcha_options.recaptcha_private_key;
    61 				secret = captcha_options.recaptcha_private_key;
    60 				remoteip = request.conn:ip();
    62 				remoteip = request.ip or request.conn:ip();
    61 				response = form["g-recaptcha-response"];
    63 				response = form["g-recaptcha-response"];
    62 			};
    64 			};
    63 		}, function (verify_result, code)
    65 		}, function (verify_result, code)
    64 			local result = json(verify_result);
    66 			local result = json(verify_result);
    65 			if not result then
    67 			if not result then
   135 		return nil, "The username field was empty";
   137 		return nil, "The username field was empty";
   136 	end
   138 	end
   137 	if usermanager.user_exists(prepped_username, module.host) then
   139 	if usermanager.user_exists(prepped_username, module.host) then
   138 		return nil, "Username already taken";
   140 		return nil, "Username already taken";
   139 	end
   141 	end
   140 	local registering = { username = prepped_username , host = module.host, additional = form, ip = origin.conn:ip(), allowed = true }
   142 	local registering = { username = prepped_username , host = module.host, additional = form, ip = origin.ip or origin.conn:ip(), allowed = true }
   141 	module:fire_event("user-registering", registering);
   143 	module:fire_event("user-registering", registering);
   142 	if not registering.allowed then
   144 	if not registering.allowed then
   143 		return nil, registering.reason or "Registration not allowed";
   145 		return nil, registering.reason or "Registration not allowed";
   144 	end
   146 	end
   145 	if confirm_password ~= password then
   147 	if confirm_password ~= password then
   160 		end
   162 		end
   161 		module:fire_event("user-registered", {
   163 		module:fire_event("user-registered", {
   162 			username = prepped_username,
   164 			username = prepped_username,
   163 			host = module.host,
   165 			host = module.host,
   164 			source = module.name,
   166 			source = module.name,
   165 			ip = origin.conn:ip(),
   167 			ip = origin.ip or origin.conn:ip(),
   166 		});
   168 		});
   167 	end
   169 	end
   168 	return jid, err;
   170 	return jid, err;
   169 end
   171 end
   170 
   172