Mercurial > prosody-modules
comparison mod_register_web/mod_register_web.lua @ 1235:9277e0a3922f
mod_register_web: Support additional registration fields
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 30 Nov 2013 22:59:27 +0100 |
parents | da39ba4047a7 |
children | 59332e0bfbdc |
comparison
equal
deleted
inserted
replaced
1234:da39ba4047a7 | 1235:9277e0a3922f |
---|---|
1 local captcha_options = module:get_option("captcha_options", {}); | 1 local captcha_options = module:get_option("captcha_options", {}); |
2 local nodeprep = require "util.encodings".stringprep.nodeprep; | 2 local nodeprep = require "util.encodings".stringprep.nodeprep; |
3 local usermanager = require "core.usermanager"; | 3 local usermanager = require "core.usermanager"; |
4 local http = require "util.http"; | 4 local http = require "util.http"; |
5 | |
6 local extra_fields = { | |
7 nick = true; name = true; first = true; last = true; email = true; | |
8 address = true; city = true; state = true; zip = true; | |
9 phone = true; url = true; date = true; | |
10 } | |
5 | 11 |
6 function template(data) | 12 function template(data) |
7 -- Like util.template, but deals with plain text | 13 -- Like util.template, but deals with plain text |
8 return { apply = function(values) return (data:gsub("{([^}]+)}", values)); end } | 14 return { apply = function(values) return (data:gsub("{([^}]+)}", values)); end } |
9 end | 15 end |
108 if usermanager.user_exists(prepped_username, module.host) then | 114 if usermanager.user_exists(prepped_username, module.host) then |
109 return nil, "Username already taken"; | 115 return nil, "Username already taken"; |
110 end | 116 end |
111 local ok, err = usermanager.create_user(prepped_username, form.password, module.host); | 117 local ok, err = usermanager.create_user(prepped_username, form.password, module.host); |
112 if ok then | 118 if ok then |
119 local extra_data = {}; | |
120 for field in pairs(extra_fields) do | |
121 local field_value = form[field]; | |
122 if field_value and #field_value > 0 then | |
123 extra_data[field] = field_value; | |
124 end | |
125 end | |
126 if next(first) ~= nil then | |
127 datamanager.store(prepped_username, module.host, "account_details", extra_data); | |
128 end | |
113 module:fire_event("user-registered", { | 129 module:fire_event("user-registered", { |
114 username = prepped_username, | 130 username = prepped_username, |
115 host = module.host, | 131 host = module.host, |
116 source = module.name | 132 source = module.name |
117 }); | 133 }); |