Software /
code /
prosody
Changeset
6185:d4a8840e72f9
plugins/muc/muc.lib: Fix anonymous check in `send_occupant_list`
author | daurnimator <quae@daurnimator.com> |
---|---|
date | Fri, 28 Mar 2014 13:34:46 -0400 |
parents | 6184:2bfc4b12ec8f |
children | 6186:85f7cd91dc31 |
files | plugins/muc/muc.lib.lua |
diffstat | 1 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/muc/muc.lib.lua Fri Mar 28 13:14:33 2014 -0400 +++ b/plugins/muc/muc.lib.lua Fri Mar 28 13:34:46 2014 -0400 @@ -273,13 +273,21 @@ end function room_mt:send_occupant_list(to, filter) - local to_occupant = self:get_occupant_by_real_jid(to); - local has_anonymous = self:get_whois() ~= "anyone" + local to_bare = jid_bare(to); + local is_anonymous = true; + if self:get_whois() ~= "anyone" then + local affiliation = self:get_affiliation(to); + if affiliation ~= "admin" and affiliation ~= "owner" then + local occupant = self:get_occupant_by_real_jid(to); + if not occupant or occupant.role ~= "moderator" then + is_anonymous = false; + end + end + end for occupant_jid, occupant in self:each_occupant() do if filter == nil or filter(occupant_jid, occupant) then local x = st.stanza("x", {xmlns='http://jabber.org/protocol/muc#user'}); - local is_anonymous = has_anonymous and occupant.role ~= "moderator" and to_occupant.bare_jid ~= occupant.bare_jid; - self:build_item_list(occupant, x, is_anonymous); + self:build_item_list(occupant, x, is_anonymous and to_bare ~= occupant.bare_jid); -- can always see your own jids local pres = st.clone(occupant:get_presence()); pres.attr.to = to; pres:add_child(x);