Mercurial > prosody-modules
comparison mod_muc_block_pm/mod_muc_block_pm.lua @ 2588:69d3e0037435
mod_muc_block_pm: Prevent unaffiliated users from sending private messages in MUC
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Tue, 28 Feb 2017 17:04:30 +0100 |
| parents | |
| children | afedc2430b0d |
comparison
equal
deleted
inserted
replaced
| 2587:8c879948a2cf | 2588:69d3e0037435 |
|---|---|
| 1 local bare_jid = require"util.jid".bare; | |
| 2 local st = require"util.stanza"; | |
| 3 | |
| 4 local muc_rooms = module:depends"muc".rooms; | |
| 5 | |
| 6 module:hook("message/full", function(event) | |
| 7 local stanza, origin = event.stanza, event.origin; | |
| 8 local to, from = stanza.attr.to, stanza.attr.from; | |
| 9 local room = muc_rooms[bare_jid(to)]; | |
| 10 local to_occupant = room and room._occupants[to]; | |
| 11 local from_occupant = room and room._occupants[room._jid_nick[from]] | |
| 12 if not ( to_occupant and from_occupant ) then return end | |
| 13 | |
| 14 if from_occupant.affiliation then | |
| 15 to_occupant._pm_block_override = true; | |
| 16 elseif not from_occupant._pm_block_override then | |
| 17 origin.send(st.error_reply(stanza, "cancel", "not-authorized", "Private messages are disabled")); | |
| 18 return true; | |
| 19 end | |
| 20 end, 1); |
