Software / code / prosody
Comparison
plugins/muc/register.lib.lua @ 10411:db2a06b9ff98
Merge 0.11->trunk
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 16 Nov 2019 16:52:31 +0100 |
| parent | 10373:51ea82f55322 |
| child | 10448:cbe524ed1a6a |
comparison
equal
deleted
inserted
replaced
| 10410:659b577f280c | 10411:db2a06b9ff98 |
|---|---|
| 13 if room._reserved_nicks then | 13 if room._reserved_nicks then |
| 14 return room._reserved_nicks; | 14 return room._reserved_nicks; |
| 15 end | 15 end |
| 16 module:log("debug", "Refreshing reserved nicks..."); | 16 module:log("debug", "Refreshing reserved nicks..."); |
| 17 local reserved_nicks = {}; | 17 local reserved_nicks = {}; |
| 18 for jid in room:each_affiliation() do | 18 for jid, _, data in room:each_affiliation() do |
| 19 local data = room._affiliation_data[jid]; | |
| 20 local nick = data and data.reserved_nickname; | 19 local nick = data and data.reserved_nickname; |
| 21 module:log("debug", "Refreshed for %s: %s", jid, nick); | 20 module:log("debug", "Refreshed for %s: %s", jid, nick); |
| 22 if nick then | 21 if nick then |
| 23 reserved_nicks[nick] = jid; | 22 reserved_nicks[nick] = jid; |
| 24 end | 23 end |
| 52 event.reply:tag("feature", { var = "jabber:iq:register" }):up(); | 51 event.reply:tag("feature", { var = "jabber:iq:register" }):up(); |
| 53 end); | 52 end); |
| 54 | 53 |
| 55 local registration_form = dataforms.new { | 54 local registration_form = dataforms.new { |
| 56 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/muc#register" }, | 55 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/muc#register" }, |
| 57 { name = "muc#register_roomnick", type = "text-single", label = "Nickname"}, | 56 { name = "muc#register_roomnick", type = "text-single", required = true, label = "Nickname"}, |
| 58 }; | 57 }; |
| 59 | 58 |
| 60 local function enforce_nick_policy(event) | 59 local function enforce_nick_policy(event) |
| 61 local origin, stanza = event.origin, event.stanza; | 60 local origin, stanza = event.origin, event.stanza; |
| 62 local room = assert(event.room); -- FIXME | 61 local room = assert(event.room); -- FIXME |
| 133 end | 132 end |
| 134 origin.send(reply); | 133 origin.send(reply); |
| 135 return true; | 134 return true; |
| 136 end | 135 end |
| 137 local form_tag = query:get_child("x", "jabber:x:data"); | 136 local form_tag = query:get_child("x", "jabber:x:data"); |
| 138 local reg_data = form_tag and registration_form:data(form_tag); | 137 if not form_tag then |
| 138 origin.send(st.error_reply(stanza, "modify", "bad-request", "Missing dataform")); | |
| 139 return true; | |
| 140 end | |
| 141 local form_type, err = dataforms.get_type(form_tag); | |
| 142 if not form_type then | |
| 143 origin.send(st.error_reply(stanza, "modify", "bad-request", "Error with form: "..err)); | |
| 144 return true; | |
| 145 elseif form_type ~= "http://jabber.org/protocol/muc#register" then | |
| 146 origin.send(st.error_reply(stanza, "modify", "bad-request", "Error in form")); | |
| 147 return true; | |
| 148 end | |
| 149 local reg_data = registration_form:data(form_tag); | |
| 139 if not reg_data then | 150 if not reg_data then |
| 140 origin.send(st.error_reply(stanza, "modify", "bad-request", "Error in form")); | 151 origin.send(st.error_reply(stanza, "modify", "bad-request", "Error in form")); |
| 141 return true; | 152 return true; |
| 142 end | 153 end |
| 143 -- Is the nickname valid? | 154 -- Is the nickname valid? |