diff options
author | Waqas Hussain <waqas20@gmail.com> | 2012-08-01 01:36:30 +0500 |
---|---|---|
committer | Waqas Hussain <waqas20@gmail.com> | 2012-08-01 01:36:30 +0500 |
commit | ebd36ab0e6567c053a8db5d96e07f0903a705291 (patch) | |
tree | a1cfaeaaca3a509597d404ea09ee934e227627ca /plugins | |
parent | 87daf634cdc6faaddc812500e427e9791128fb4d (diff) | |
download | prosody-ebd36ab0e6567c053a8db5d96e07f0903a705291.tar.gz prosody-ebd36ab0e6567c053a8db5d96e07f0903a705291.zip |
MUC: Give host and server admins "owner" affiliation in all rooms.
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/muc/mod_muc.lua | 14 |
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); |