comparison mod_register_json/mod_register_json.lua @ 430:f0fafd19fd72

mod_register_json: changed pestered code to something less pestered. (added nodeprep)
author Marco Cirillo <maranda@lightwitch.org>
date Thu, 15 Sep 2011 21:23:49 +0000
parents ea6641deec12
children 84e992f70ba3
comparison
equal deleted inserted replaced
429:ea6641deec12 430:f0fafd19fd72
9 local usermanager = require "core.usermanager"; 9 local usermanager = require "core.usermanager";
10 local b64_decode = require "util.encodings".base64.decode; 10 local b64_decode = require "util.encodings".base64.decode;
11 local json_decode = require "util.json".decode; 11 local json_decode = require "util.json".decode;
12 local httpserver = require "net.httpserver"; 12 local httpserver = require "net.httpserver";
13 local os_time = os.time; 13 local os_time = os.time;
14 local nodeprep = require "util.encodings".stringprep.nodeprep;
14 15
15 module.host = "*" -- HTTP/BOSH Servlets need to be global. 16 module.host = "*" -- HTTP/BOSH Servlets need to be global.
16 17
17 -- Pick up configuration. 18 -- Pick up configuration.
18 19
91 ip.time = os_time(); 92 ip.time = os_time();
92 end 93 end
93 end 94 end
94 95
95 -- We first check if the supplied username for registration is already there. 96 -- We first check if the supplied username for registration is already there.
96 if not usermanager.user_exists(req_body["username"], req_body["host"]) then 97 -- And nodeprep the username
97 -- Sanity checks for the username. 98 local username = nodeprep(req_body["username"]);
98 if req_body["username"]:find(" ") or req_body["username"]:find("@") or req_body["username"]:find("<") or 99 if not usermanager.user_exists(username, req_body["host"]) then
99 req_body["username"]:find(">") or req_body["username"]:find("\"") or req_body["username"]:find("\'") or 100 if not username then
100 req_body["username"]:find("/") then 101 module:log("debug", "%s supplied an username containing invalid characters: %s", user, username);
101 module:log("debug", "%s supplied an username containing invalid characters: %s", user, req_body["username"]);
102 return http_response(406, "Supplied username contains invalid characters, see RFC 6122."); 102 return http_response(406, "Supplied username contains invalid characters, see RFC 6122.");
103 else 103 else
104 usermanager.create_user(req_body["username"], req_body["password"], req_body["host"]); 104 usermanager.create_user(username, req_body["password"], req_body["host"]);
105 module:log("debug", "%s registration data submission for %s is successful", user, req_body["username"]); 105 module:log("debug", "%s registration data submission for %s is successful", user, username);
106 return http_response(200, "Done."); 106 return http_response(200, "Done.");
107 end 107 end
108 else 108 else
109 module:log("debug", "%s registration data submission for %s failed (user already exists)", user, req_body["username"]); 109 module:log("debug", "%s registration data submission for %s failed (user already exists)", user, username);
110 return http_response(409, "User already exists."); 110 return http_response(409, "User already exists.");
111 end 111 end
112 end 112 end
113 end 113 end
114 end 114 end