MUC: Prevent visitors from broadcasting messages.
authorWaqas Hussain <waqas20@gmail.com>
Wed, 25 Nov 2009 16:42:05 +0000 (21:42 +0500)
committerWaqas Hussain <waqas20@gmail.com>
Wed, 25 Nov 2009 16:42:05 +0000 (21:42 +0500)
plugins/muc/muc.lib.lua

index 0fb5223dbb47636ca90291bfa67c22d760b0ffd2..7907c0c3ea54674b6e70c28fffdff72e6eff34ac 100644 (file)
@@ -519,8 +519,11 @@ function room_mt:handle_to_room(origin, stanza) -- presence changes and groupcha
                local from, to = stanza.attr.from, stanza.attr.to;
                local room = jid_bare(to);
                local current_nick = self._jid_nick[from];
-               if not current_nick then -- not in room
+               local occupant = self._occupants[current_nick];
+               if not occupant then -- not in room
                        origin.send(st.error_reply(stanza, "cancel", "not-acceptable"));
+               elseif occupant.role == "visitor" then
+                       origin.send(st.error_reply(stanza, "cancel", "forbidden"));
                else
                        local from = stanza.attr.from;
                        stanza.attr.from = current_nick;