Mercurial > prosody-modules
comparison mod_register_web/mod_register_web.lua @ 2929:3a104a900af1
mod_register_web: Pass username to generate_register_response
author | Michel Le Bihan <michel@lebihan.pl> |
---|---|
date | Tue, 13 Mar 2018 21:12:21 +0100 |
parents | 049975800d1c |
children | d631fd9a3300 |
comparison
equal
deleted
inserted
replaced
2928:b0d92332b87f | 2929:3a104a900af1 |
---|---|
115 | 115 |
116 function register_user(form, origin) | 116 function register_user(form, origin) |
117 local username = form.username; | 117 local username = form.username; |
118 local password = form.password; | 118 local password = form.password; |
119 local confirm_password = form.confirm_password; | 119 local confirm_password = form.confirm_password; |
120 local jid = nil; | |
120 form.username, form.password, form.confirm_password = nil, nil, nil; | 121 form.username, form.password, form.confirm_password = nil, nil, nil; |
121 | 122 |
122 local prepped_username = nodeprep(username); | 123 local prepped_username = nodeprep(username); |
123 if not prepped_username then | 124 if not prepped_username then |
124 return nil, "Username contains forbidden characters"; | 125 return nil, "Username contains forbidden characters"; |
137 if confirm_password ~= password then | 138 if confirm_password ~= password then |
138 return nil, "Passwords don't match"; | 139 return nil, "Passwords don't match"; |
139 end | 140 end |
140 local ok, err = usermanager.create_user(prepped_username, password, module.host); | 141 local ok, err = usermanager.create_user(prepped_username, password, module.host); |
141 if ok then | 142 if ok then |
143 jid = prepped_username.."@"..module.host | |
142 local extra_data = {}; | 144 local extra_data = {}; |
143 for field in pairs(extra_fields) do | 145 for field in pairs(extra_fields) do |
144 local field_value = form[field]; | 146 local field_value = form[field]; |
145 if field_value and #field_value > 0 then | 147 if field_value and #field_value > 0 then |
146 extra_data[field] = field_value; | 148 extra_data[field] = field_value; |
154 host = module.host, | 156 host = module.host, |
155 source = module.name, | 157 source = module.name, |
156 ip = origin.conn:ip(), | 158 ip = origin.conn:ip(), |
157 }); | 159 }); |
158 end | 160 end |
159 return ok, err; | 161 return jid, err; |
160 end | 162 end |
161 | 163 |
162 function generate_success(event, form) | 164 function generate_success(event, jid) |
163 return render(success_tpl, { jid = nodeprep(form.username).."@"..module.host }); | 165 return render(success_tpl, { jid = jid }); |
164 end | 166 end |
165 | 167 |
166 function generate_register_response(event, form, ok, err) | 168 function generate_register_response(event, jid, err) |
167 event.response.headers.content_type = "text/html; charset=utf-8"; | 169 event.response.headers.content_type = "text/html; charset=utf-8"; |
168 if ok then | 170 if jid then |
169 return generate_success(event, form); | 171 return generate_success(event, jid); |
170 else | 172 else |
171 return generate_page(event, { register_error = err }); | 173 return generate_page(event, { register_error = err }); |
172 end | 174 end |
173 end | 175 end |
174 | 176 |
175 function handle_form(event) | 177 function handle_form(event) |
176 local request, response = event.request, event.response; | 178 local request, response = event.request, event.response; |
177 local form = http.formdecode(request.body); | 179 local form = http.formdecode(request.body); |
178 verify_captcha(request, form, function (ok, err) | 180 verify_captcha(request, form, function (ok, err) |
179 if ok then | 181 if ok then |
180 local register_ok, register_err = register_user(form, request); | 182 local jid, register_err = register_user(form, request); |
181 response:send(generate_register_response(event, form, register_ok, register_err)); | 183 response:send(generate_register_response(event, jid, register_err)); |
182 else | 184 else |
183 response:send(generate_page(event, { register_error = err })); | 185 response:send(generate_page(event, { register_error = err })); |
184 end | 186 end |
185 end); | 187 end); |
186 return true; -- Leave connection open until we respond above | 188 return true; -- Leave connection open until we respond above |