comparison mod_register_json/register_json/mod_register_json.lua @ 991:929dcf3c4bcb

mod_register_json: small code cleanup & optimization.
author Marco Cirillo <maranda@lightwitch.org>
date Mon, 29 Apr 2013 23:39:21 +0200
parents 7c04c5856daa
children 794817421fc6
comparison
equal deleted inserted replaced
990:17ba2c59d661 991:929dcf3c4bcb
85 response.status_code = code 85 response.status_code = code
86 response:send(handle(code, message)) 86 response:send(handle(code, message))
87 end 87 end
88 88
89 local function handle_req(event) 89 local function handle_req(event)
90 local response = event.response
91 local request = event.request 90 local request = event.request
92 local body = request.body
93 if secure and not request.secure then return nil end 91 if secure and not request.secure then return nil end
94 92
95 if request.method ~= "POST" then 93 if request.method ~= "POST" then
96 return http_response(event, 405, "Bad method.", {["Allow"] = "POST"}) 94 return http_response(event, 405, "Bad method.", {["Allow"] = "POST"})
97 end 95 end
98 96
99 local req_body 97 local req_body
100 -- We check that what we have is valid JSON wise else we throw an error... 98 -- We check that what we have is valid JSON wise else we throw an error...
101 if not pcall(function() req_body = json_decode(b64_decode(body)) end) then 99 if not pcall(function() req_body = json_decode(b64_decode(request.body)) end) then
102 module:log("debug", "Data submitted for user registration by %s failed to Decode.", user) 100 module:log("debug", "Data submitted for user registration by %s failed to Decode.", user)
103 return http_response(event, 400, "Decoding failed.") 101 return http_response(event, 400, "Decoding failed.")
104 else 102 else
105 -- Decode JSON data and check that all bits are there else throw an error 103 -- Decode JSON data and check that all bits are there else throw an error
106 if req_body["username"] == nil or req_body["password"] == nil or req_body["ip"] == nil or req_body["mail"] == nil or 104 if req_body["username"] == nil or req_body["password"] == nil or req_body["ip"] == nil or req_body["mail"] == nil or
187 local data = f:read("*a") ; f:close() 185 local data = f:read("*a") ; f:close()
188 return data 186 return data
189 end 187 end
190 188
191 local function r_template(event, type) 189 local function r_template(event, type)
192 local response = event.response
193
194 local data = open_file(files_base..type.."_t.html") 190 local data = open_file(files_base..type.."_t.html")
195 if data then 191 if data then
196 data = data:gsub("%%REG%-URL", base_path.."verify/") 192 data = data:gsub("%%REG%-URL", base_path.."verify/")
197 return data 193 return data
198 else return http_response(event, 500, "Failed to obtain template.") end 194 else return http_response(event, 500, "Failed to obtain template.") end
199 end 195 end
200 196
201 local function handle_verify(event, path) 197 local function handle_verify(event, path)
202 local response = event.response
203 local request = event.request 198 local request = event.request
204 local body = request.body 199 local body = request.body
205 if secure and not request.secure then return nil end 200 if secure and not request.secure then return nil end
206 201
207 local valid_files = { 202 local valid_files = {
220 if data then return data 215 if data then return data
221 else return http_response(event, 404, "Not found.") end 216 else return http_response(event, 404, "Not found.") end
222 end 217 end
223 elseif request.method == "POST" then 218 elseif request.method == "POST" then
224 if path == "" then 219 if path == "" then
225 if not request.body then return http_response(event, 400, "Bad Request.") end 220 if not body then return http_response(event, 400, "Bad Request.") end
226 local uuid = urldecode(request.body):match("^uuid=(.*)$") 221 local uuid = urldecode(body):match("^uuid=(.*)$")
227 222
228 if not pending[uuid] then 223 if not pending[uuid] then
229 return r_template(event, "fail") 224 return r_template(event, "fail")
230 else 225 else
231 local username, password, ip = 226 local username, password, ip =