changeset 628:c72be31941fa

mod_compat_muc_admin: we shall make sure that only owners can destroy rooms and not everyone, isn't it?
author Marco Cirillo <maranda@lightwitch.org>
date Tue, 27 Mar 2012 16:07:52 +0000
parents a8ff69c9b498
children 7d4cde86b12e
files mod_compat_muc_admin/mod_compat_muc_admin.lua
diffstat 1 files changed, 12 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/mod_compat_muc_admin/mod_compat_muc_admin.lua	Tue Mar 27 15:49:31 2012 +0000
+++ b/mod_compat_muc_admin/mod_compat_muc_admin.lua	Tue Mar 27 16:07:52 2012 +0000
@@ -117,17 +117,19 @@
 			elseif xmlns == xmlns_mo and stanza.tags[1].tags[1] then
 				local child = stanza.tags[1].tags[1];
 				if child.name == "destroy" then
-					local newjid = child.attr.jid;
-					local reason, password;
-					for _,tag in ipairs(child.tags) do
-						if tag.name == "reason" then
-							reason = #tag.tags == 0 and tag[1];
-						elseif tag.name == "password" then
-							password = #tag.tags == 0 and tag[1];
+					if self:get_affiliation(stanza.attr.from) == "owner" then
+						local newjid = child.attr.jid;
+						local reason, password;
+						for _,tag in ipairs(child.tags) do
+							if tag.name == "reason" then
+								reason = #tag.tags == 0 and tag[1];
+							elseif tag.name == "password" then
+								password = #tag.tags == 0 and tag[1];
+							end
 						end
-					end
-					self:destroy(newjid, reason, password);
-					origin.send(st.reply(stanza));
+						self:destroy(newjid, reason, password);
+						origin.send(st.reply(stanza));
+					else origin.send(st.error_reply(stanza, "auth", "forbidden", "Only owners can destroy rooms")); end
 				else
 					self:compat_iq(origin, stanza, xmlns);
 				end