Mercurial > prosody-hg
comparison plugins/muc/mod_muc.lua @ 6234:cc8a6ca2d7c5
plugins/muc/mod_muc: Move affiliation monkey patch into own scope
| author | daurnimator <quae@daurnimator.com> |
|---|---|
| date | Mon, 28 Apr 2014 16:30:53 -0400 |
| parents | 355b29881117 |
| children | d433db49e353 |
comparison
equal
deleted
inserted
replaced
| 6231:bc12a8253f94 | 6234:cc8a6ca2d7c5 |
|---|---|
| 24 end | 24 end |
| 25 end | 25 end |
| 26 | 26 |
| 27 local muclib = module:require "muc"; | 27 local muclib = module:require "muc"; |
| 28 local muc_new_room = muclib.new_room; | 28 local muc_new_room = muclib.new_room; |
| 29 room_mt = muclib.room_mt; -- Yes, global. | |
| 29 local persistent = module:require "muc/persistent"; | 30 local persistent = module:require "muc/persistent"; |
| 30 local jid_split = require "util.jid".split; | 31 local jid_split = require "util.jid".split; |
| 31 local jid_bare = require "util.jid".bare; | 32 local jid_bare = require "util.jid".bare; |
| 32 local st = require "util.stanza"; | 33 local st = require "util.stanza"; |
| 33 local um_is_admin = require "core.usermanager".is_admin; | 34 local um_is_admin = require "core.usermanager".is_admin; |
| 50 | 51 |
| 51 local function is_admin(jid) | 52 local function is_admin(jid) |
| 52 return um_is_admin(jid, module.host); | 53 return um_is_admin(jid, module.host); |
| 53 end | 54 end |
| 54 | 55 |
| 55 room_mt = muclib.room_mt; -- Yes, global. | 56 do -- Monkey patch to make server admins room owners |
| 56 local _set_affiliation = room_mt.set_affiliation; | 57 local _get_affiliation = room_mt.get_affiliation; |
| 57 local _get_affiliation = room_mt.get_affiliation; | 58 function room_mt:get_affiliation(jid) |
| 58 function muclib.room_mt:get_affiliation(jid) | 59 if is_admin(jid) then return "owner"; end |
| 59 if is_admin(jid) then return "owner"; end | 60 return _get_affiliation(self, jid); |
| 60 return _get_affiliation(self, jid); | 61 end |
| 61 end | 62 |
| 62 function muclib.room_mt:set_affiliation(actor, jid, affiliation, callback, reason) | 63 local _set_affiliation = room_mt.set_affiliation; |
| 63 if is_admin(jid) then return nil, "modify", "not-acceptable"; end | 64 function room_mt:set_affiliation(actor, jid, ...) |
| 64 return _set_affiliation(self, actor, jid, affiliation, callback, reason); | 65 if is_admin(jid) then return nil, "modify", "not-acceptable"; end |
| 66 return _set_affiliation(self, actor, jid, ...); | |
| 67 end | |
| 65 end | 68 end |
| 66 | 69 |
| 67 local function room_save(room, forced) | 70 local function room_save(room, forced) |
| 68 local node = jid_split(room.jid); | 71 local node = jid_split(room.jid); |
| 69 local is_persistent = persistent.get(room); | 72 local is_persistent = persistent.get(room); |
