aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWaqas Hussain <waqas20@gmail.com>2012-08-01 01:36:30 +0500
committerWaqas Hussain <waqas20@gmail.com>2012-08-01 01:36:30 +0500
commitebd36ab0e6567c053a8db5d96e07f0903a705291 (patch)
treea1cfaeaaca3a509597d404ea09ee934e227627ca
parent87daf634cdc6faaddc812500e427e9791128fb4d (diff)
downloadprosody-ebd36ab0e6567c053a8db5d96e07f0903a705291.tar.gz
prosody-ebd36ab0e6567c053a8db5d96e07f0903a705291.zip
MUC: Give host and server admins "owner" affiliation in all rooms.
-rw-r--r--plugins/muc/mod_muc.lua14
1 files changed, 13 insertions, 1 deletions
diff --git a/plugins/muc/mod_muc.lua b/plugins/muc/mod_muc.lua
index 94d8263c..cfb1dd22 100644
--- a/plugins/muc/mod_muc.lua
+++ b/plugins/muc/mod_muc.lua
@@ -22,7 +22,8 @@ if restrict_room_creation then
restrict_room_creation = nil;
end
end
-local muc_new_room = module:require "muc".new_room;
+local muclib = module:require "muc";
+local muc_new_room = muclib.new_room;
local jid_split = require "util.jid".split;
local jid_bare = require "util.jid".bare;
local st = require "util.stanza";
@@ -42,6 +43,17 @@ local function is_admin(jid)
return um_is_admin(jid, module.host);
end
+local _set_affiliation = muc_new_room.room_mt.set_affiliation;
+local _get_affiliation = muc_new_room.room_mt.get_affiliation;
+function muclib.room_mt:get_affiliation(jid)
+ if is_admin(jid) then return "owner"; end
+ return _get_affiliation(self, jid);
+end
+function muclib.room_mt:set_affiliation(actor, jid, affiliation, callback, reason)
+ if is_admin(jid) then return nil, "modify", "not-acceptable";; end
+ return _set_affiliation(self, actor, jid, affiliation, callback, reason);
+end
+
local function room_route_stanza(room, stanza) module:send(stanza); end
local function room_save(room, forced)
local node = jid_split(room.jid);